Tildelinger Scripts - Slet

Bemærk!:  Vi vil gerne give dig den mest opdaterede hjælp, så hurtigt vi kan, på dit eget sprog. Denne side er oversat ved hjælp af automatisering og kan indeholde grammatiske fejl og unøjagtigheder. Det er vores hensigt, at dette indhold skal være nyttigt for dig. Vil du fortælle os, om oplysningerne var nyttige for dig, nederst på denne side? Her er artiklen på engelsk så du kan sammenligne.

Vedhæftet er power shellscripts til sletning - EDU tildelinger, eksport - EDU tildelinger og Get - bruger klasser.

Slet - EDU tildelinger

< #
   . Forestilling
    Slet Edu tildelinger data fra en bruger i et sæt af klasser, der er angivet i CSV-fil.
    . Beskrivelse
    Scriptet læser klasse oplysninger om bruger fra en CSV-fil. Få opgaver og anmodninger for hver tildeling, og slet derefter anmodninger, det også oprette en rapport file(DeleteAssignmentsReport.csv) for ekstra oplysninger til opkald. Når du er færdig sletningen af bidrag opdaterer kolonnen DeleteSubmissionsProcessed til Sand for denne specifikke klasse. Hvis scriptet mislykkes ind imellem kan vi køre scriptet med den samme fil, fordi filen opdateres til sidste sletning af bidrag.
   . Eksempel på
    .\Delete-EduAssignments.ps1 - userClassDetailsFile < hele stien til bruger klasse detaljer csv-fil >
    Dette, slettes alle anmodninger, men fjerner ikke brugeroplysninger fra klasse
    .\Delete-EduAssignments.ps1 - userClassDetailsFile < hele stien til bruger klasse detaljer csv-fil > - removeMemberFromClass
    Dette vil slette alle anmodninger og fjerne brugeroplysninger fra klasse
   . Parameter userClassDetailsFile
   Dette er den csv-file(userClassDetails.csv), som er output fra Get-UserClasses.ps1 script. Denne fil indeholder oplysninger om bruger klasserne, og om sletning og få anmodninger behandles. Denne værdi skal være hele stien til file(drive:\GDPR\userClassDetails.csv)
   . Skifte Parameter removeMemberFromClass
   Når vi bruger denne parameter fjernes brugeroplysninger fra hver klasse
   . Noter
   Vi vil have Microsoft.IdentityModel.Clients.ActiveDirectory.dll og Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll der kræves
#>
Parameteren (
    [parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Hvis (-ikke ($_ | Test-Path)) {
            Udløs "på userClassDetailsFile findes ikke".
        }
        Hvis (-ikke ($_ | Test-Path - PathType blad)) {
            Udløs "argumentet userClassDetailsFile skal være en fil. Stier til mapper er ikke tilladt."
        }
        Hvis ($_ - notmatch "(\.csv)") {
            Udløs "på userClassDetailsFile skal være en kommasepareret fil oprettet ved hjælp af Get-UserClasses.ps1"
        }
        returnere $true
    })]
    [streng] $userClassDetailsFile,

[parameter(Mandatory=$false)]
    [Skift] $removeMemberFromClass
)
# Indlæse ADAL
Tilføj Type-sti ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$educationEndpoint = "https://graph.microsoft.com/beta/education/"
$script: userClassDetails = @ ()
$script: deleteAssignmentsReport = @ ()
$script: maxRetryAttempt = 3
$script: authHeaders = $null
$script: authenticationResult = $null
$graphEndpoint = "https://graph.microsoft.com"
$authString = "https://login.windows.net/common"

#Get på authheaders
funktionen Get-AuthHeaders
{
    Parameteren (
        [Parameter(Mandatory=$false)]
        Boolesk $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = ny objekt System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = ny objekt "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - ArgumentList $authString
    Hvis ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    anden
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Godkendelse" = $authHeader; "Indholdstype" = "Programmet/json"}
    returnere $headers
}

#Retry logik og logføring af fejl for script
funktionen Aktiver RequestWithRetry
{
    Parameteren (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$true)] [ValidateSet ('Get', 'Slet' ignorecase = $true)] $httpmethod,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className,
        [Parameter(Mandatory=$true)] $OperationName
    )

for ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        Prøv
        {
            $APIResult = Aktiver WebRequest-metode $httpmethod - Uri $url-sidehoveder $script: authHeaders
            $resultCount = 0
            Hvis ($OperationName - eq "GetAssignments")
            {
                $valueStartIndex = ($APIResult.content.indexof('"value":') + 8)
                $valueEndIndex = $APIResult.content.Length
                $valueString = $APIResult.content.substring ($valueStartIndex, $valueEndIndex $valueStartIndex -1)
                $resultCount = (($valuestring | Vælg streng ' "klasse":' - AllMatches). Matches.Count)
            }
            anden
            {
                $submissionsJson = $APIResult.content | ConvertFrom Json
                $resultCount = $submissionsJson.value.count
            }

$script: deleteAssignmentsReport += (lighedstegn) [PSCustomObject] @{
                RequestUrl = $url
                Metode = $httpmethod
                ResponseCode = $APIResult.StatusCode
                Klassenavn = $className
                Klasse = $classId
                RequestId = $APIResult.Headers ["anmodning-id"]
                StatusDescription = $APIResult.StatusDescription
                NumberOfAttempts = $i
                OperationName = $OperationName
                ResultCount = $resultCount
            }
            returnere $APIResult
        }
        fange
        {
            IF($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["anmodning-id"]
            }

            $script: deleteAssignmentsReport += (lighedstegn) [PSCustomObject] @{
                RequestUrl = $url
                Metode = $httpmethod
                ResponseCode = $responseCode
                Klassenavn = $className
                Klasse = $classId
                RequestId = $requestId
                StatusDescription = $_. Exception.Message
                NumberOfAttempts = $i
                OperationName = $OperationName
                ResultCount = $resultCount
            }            

Hvis ($i - eq $script: maxRetryAttempt)
            {
                Udløs $_
            }

Hvis ($responseCode - eq 401)
            {
                $script: authHeaders = Get-AuthHeaders - useRefreshToken $true
            }
        }
    }
}

#Remove medlem i klasse
funktionen Fjern MemberFromClass
{
    Parameteren (
        [Parameter(Mandatory=$true)] $classDetails
    )

$removeMemberUrl = "{0}/v1.0/groups/{1}/members/{2}/'$ref" -f $graphEndpoint, $($classDetails.ClassId), $($classDetails.UserId)
    Prøv
    {
        Kalde RequestWithRetry-URL-adressen $removeMemberUrl - httpmethod Slet - klasse $($classDetails.ClassId) - klassenavn $($classDetails.ClassName) - OperationName "RemoveMemberfromClass" | Tilknytte Null
    }
    fange
    {
        Udløs $_
    }

}    

funktionen Slet tildelinger
{
    Parameteren (
        [Parameter(Mandatory=$true)] $classDetail
    )

Prøv
    {
        $classId = $classDetail.ClassId
        $className = $classDetail.ClassName
        $userId = $classDetail.UserId
        $role = $classDetail.Role
        $getAssignmentsUri = ("{0} / classes('{1}')/assignments?TargetUserId = {2} & UserClassRole = {3}" -f $educationEndpoint, $classId, $userId, $role)
        $assignments = $null
        $assignments = Aktiver RequestWithRetry-URL-adressen $getAssignmentsUri - httpmethod få - klasse $classId - klassenavn $className - OperationName "GetAssignments"
        Hvis ($assignments - ne $null- og $assignments.content - ne $null- og $role - eq "Studerende"))
        {
            $assignmentsCount = ((($assignments.content) | ConvertFrom-Json) .value) .count
            Skriv-Host "Retrieved $assignmentsCount tildelinger $className klassen"
            $assignmentsTracker = 0
            foreach ($assignment i (($assignments.content) | ConvertFrom-Json) .value)
            {
                $assignmentName = $assignment.displayName
                $assignmentId = $assignment.id
                $submissions = $assignment.submissions
                Skriv-Host "Slette anmodninger for $($assignmentName)"
                $submissionsTracker = 0
                foreach ($submission i $submissions)
                {
                    $deleteSDSSubmissionUri = "{0} / beta/uddannelse/klasser / {1} /assignments/ {2} /submissions/ {3} ?TargetUserId = {4} & UserClassRole = Student" -f $graphEndpoint, $classId $assignmentId $($submission.id), og $userId
                    Hvis (($submissionsTracker - eq ($submissions. Længde -1))- og ($assignmentsTracker - eq ($assignmentsCount - 1))- og ($removeMemberFromClass.IsPresent))
                    {
                        Skriv Host "slette bidrag og classinfo for bruger"
                        $deleteSDSSubmissionUri = $deleteSDSSubmissionUri + "& CleanupUserClassData = true"
                    }
                    $deleteResponse = Aktiver RequestWithRetry-URL-adressen $deleteSDSSubmissionUri - httpmethod slette - klasse $classId - klassenavn $className - OperationName "DeleteSubmission"
                    Hvis ($deleteResponse - ne $null- og $deleteResponse.Content.Length - ne 0 - og $submissionsTracker - eq ($submissions. Længde -1))
                    {
                        $classDetail.DeleteSubmissionsProcessed = "True"
                        $script: userClassDetails | Eksportér-Csv-sti $($directoryPathOfFile) - NoTypeInformation-kraft
                    }
                    $submissionsTracker ++
                }
                $assignmentsTracker ++
            }
        }
    }
    fange
    {   
        Udløs $_
    }
}

$directoryPathOfFile = (get-element-sti $($userClassDetailsFile)). Fuldt navn
$script: authHeaders = Get-AuthHeaders
$script: userClassDetails = import-csv $userClassDetailsFile

$progressTracker = 0;
foreach ($classDetail i $script: userClassDetails)
{
    Skriv fremdrift-aktivitet "Slette tildelinger for bruger"-Status "behandling af klassen: $classDetail.classId" - ProcentFuldført ($progressTracker/$script:userClassDetails.count * 100)
    Hvis ($classDetail.DeleteSubmissionsProcessed - eq "Falsk")
    {
        Prøv
        {
            IF($removeMemberFromClass.IsPresent)
            {
                Skriv-Host "Slette brugere fra $($classDetail.ClassName)"
                Fjern MemberFromClass - classDetails $classDetail
            }
            Skriv-host "Slette tildelinger af brugeren til $($classDetails.ClassName)"
            Slet opgaver - classDetails $classDetail
        }
        fange
        {
            fejl ved skrivning $_. Exception.Message
        }
    }
    $progressTracker ++
}

$directoryPath = (get-element-sti ". \"-detaljeret). Fuldt navn
$script: deleteAssignmentsReport | Eksportér-Csv-sti.\DeleteAssignmentsReport.csv - NoTypeInformation-kraft
Skriv-Host "Rapport file(DeleteAssignmentsReport.csv) oprettes på $directoryPath\DeleteAssignmentsReport.csv"
Skriv Host "opdateret klasse detaljer file($($directoryPathOfFile)) og genereret opdaterede fil er i $($directoryPathOfFile)"

Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×