Tildelinger Scripts - eksport

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.

Eksport - EDU tildelinger

< #
   . Forestilling
    Eksportere 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 genererer tildeling file(assignment.json) og rapport file(GetAssignmentsReport.csv). Når udtrækning af anmodninger er færdig, opdateres kolonnen GetSubmissionsProcessed 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å
    .\Export-EduAssignments.ps1 - userClassDetailsFile < hele stien til bruger klasse detaljer csv-fil >
   . 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)
   . 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
)

# Indlæse ADAL
Tilføj Type-sti ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$educationEndpoint = "https://graph.microsoft.com/beta/education/"
$script: userClassDetails = @ ()
$script: getAssignmentsReport = @ ()
$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=$false)] $classId,
        [Parameter(Mandatory=$false)] $className,
        [Parameter(Mandatory=$true)] $OperationName
    )

for ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        Prøv
        {
            $APIResult = Aktiver WebRequest-metode få - 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: getAssignmentsReport += (lighedstegn) [PSCustomObject] @{
                RequestUrl = $url
                Metode = "Hent"
                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: getAssignmentsReport += (lighedstegn) [PSCustomObject] @{
                RequestUrl = $url
                Metode = "Hent"
                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
            }
        }
    }
}

#get tildelinger
funktionen Hent tildelinger
{
    Parameteren (
        [Parameter(Mandatory=$true)] $classDetails
    )
    Prøv
    {
        $classId = $classDetails.ClassId
        $userId = $classDetails.UserId
        $role = $classDetails.Role
        $className = $classId
        Hvis ($classDetails.ClassName - ne $null- og $classDetail.ClassName.Length - ne 0)
        {
            $className = $classDetails.ClassName
        }
        $getAssignmentsUri = ("{0} / classes('{1}')/assignments?TargetUserId = {2} & UserClassRole = {3}" -f $educationEndpoint, $classId, $userId, $role)
        $assignments = $null
        $assignments = Aktiver RequestWithRetry-URL-adressen $getAssignmentsUri - klasse $classId - klassenavn $className - OperationName "GetAssignments"
        $outputstring = ""
        Hvis ($assignments - ne $null)
        {
            $valueStartIndex = ($assignments.content.indexof('"value":') + 8)
            $valueEndIndex = $assignments.content.Length
            $valueString = $assignments.content.substring ($valueStartIndex, $valueEndIndex $valueStartIndex -1)

            $valueString = $valueString.TrimEnd("]")
            $valueString = $valueString.TrimStart("[")
            $indexValues = (($valuestring | Vælg streng ' "klasse":' - AllMatches). Matches.Index)
            Skriv-Host "Retrieved $($indexValues.count) tildelinger $className klassen"
            $assignmentsStrings = @ ()
            for ($i = 0; $i - lt $indexValues.count; $i ++)
            {
                Hvis ($i - ne $indexValues.count -1)
                {
                    $assignmentsStrings += $valueString.substring (($indexValues [$i] -1), ($indexValues [$i + 1] - $indexValues [$i] -1))
                }
                anden
                {
                    $assignmentsStrings += $valueString.substring(($indexValues[$i]-1) ($valueString.Length - $indexValues [$i] + 1))
                }

                Hvis ($role - eq "Studerende")
                {
                    $submissionsIndex = $assignmentsStrings[$i].indexof('"submissions":[')
                    $assignmentsStrings [$i] = $assignmentsStrings [$i] .substring (0, $submissionsIndex + 15)
                    $assignmentsStrings [$i] = $assignmentsStrings [$i] + "]}"
                }
            }
            for ($i = 0; $i - lt $assignmentsStrings.Length; $i ++)
            {
                $assignmentString = $assignmentsStrings [$i]
                $assignmentJson = $assignmentString | ConvertFrom Json
                $assignmentId = $assignmentJson.id
                Skriv-Host "Kom anmodninger for $($assignmentJson.displayName) tildeling"
                $sumbmissionsEndpoint = ("{0} / classes('{1}')/assignments('{2}')/submissions?TargetUserId = {3} & UserClassRole = {4}" -f $educationEndpoint, $classId, $assignmentId, $userId, $role)
                $submissions = Aktiver RequestWithRetry - klasse $classId-URL-adressen $sumbmissionsEndpoint - klassenavn $className - OperationName "GetSubmissions"
                Hvis ($submissions - ne $null- og $submissions. Content.Length - ne 0)
                {
                    $submissionsJson = $submissions.content | ConvertFrom Json
                    Skriv-Host "Retrieved $($submissionsJson.value.count) anmodninger for $($assignmentJson.displayName) tildeling"
                    $valueStartIndex = ($submissions.content.indexof('"value":') + 9)
                    $valueEndIndex = $submissions.content.lastindexof("}")
                    $submissionsString = $submissions.content.substring ($valueStartIndex, $valueEndIndex $valueStartIndex -1)
                    $assignmentsStrings [$i] = $assignmentsStrings [$i]. TrimEnd("]}")
                    $assignmentsStrings [$i] = $assignmentsStrings [$i] + $submissionsString + "]}"
                }
            }

            $completeAssigmentsString = "["
            Hvis ($assignmentsStrings.Length - eq 0)
            {
                $completeAssigmentsString = $completeAssigmentsString + "]"
            }
            anden
            {
                for ($i = 0; $i - lt $assignmentsStrings.Length; $i ++)
                {
                    Hvis ($i - eq $assignmentsStrings.Length -1)
                    {
                        $completeAssigmentsString = $completeAssigmentsString + $assignmentsStrings [$i] + "]"
                    }
                    anden
                    {
                        $completeAssigmentsString = $completeAssigmentsString + $assignmentsStrings [$i] + ","
                    }
                }
            }
            $outputstring = ' {"Klasse": "" + $classId + ' "," klassenavn":" "+ $className +'","tildelinger": "+ $completeAssigmentsString + '}'
            $dateTimeStamp = $(get-dato - f åååå-MM-dd)
            $fileName = $directoryPath + "\" + $className + "_" + $userId + "_" + $dateTimeStamp + ".json"
            $outputstring | Tilknytte fil $fileName
            Skriv Host("Assignments file for $className is generated at $fileName")
            $classDetails.GetSubmissionsProcessed = "True"
            $script: userClassDetails | Eksportér-Csv-sti $($directoryPathOfFile) - NoTypeInformation-kraft
        }
    }
    fange
    {
        fejl ved skrivning $_. Exception.Message
    }

}                                           

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

$progressTracker = 1;
#loop med hver linje og få anmodninger, hvis kolonnen getsubmissionsprocessed er falsk
foreach ($classDetail i $script: userClassDetails)
{
    Skriv fremdrift-aktivitet "Kom tildelinger for bruger"-Status "behandling af klassen: $($classDetail.classId)" - ProcentFuldført ($progressTracker / $($script: userClassDetails | Measure-Object) .count * 100)
    Hvis ($classDetail.GetSubmissionsProcessed - eq "Falsk")
    {
        Skriv-host "Få opgaver til $($classDetail.ClassName)"
        Få opgaver - classDetails $classDetail
    }
    $progressTracker ++
}

$script: getAssignmentsReport | Eksportér-Csv-sti.\GetAssignmentsReport.csv - NoTypeInformation
Skriv-Host "Rapport file(GetAssignmentsReport.csv) oprettes på $directoryPath\GetAssignmentsReport.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.

×