Office
Přihlásit se

Přiřazení skripty – Export

Poznámka:  Snažíme se pro vás co nejrychleji zajistit aktuální obsah nápovědy ve vašem jazyce. Tato stránka byla přeložena automaticky a může obsahovat gramatické chyby nebo nepřesnosti. Naším cílem je to, aby pro vás byl její obsah užitečný. Mohli byste nám prosím dát ve spodní části této stránky vědět, jestli vám informace v článku pomohly? Pokud byste se rádi podívali na jeho anglickou verzi, najdete ji tady .

Export - přiřazení EDU

< #
   . Souhrn
    Exportujte dat Edu přiřazení uživatele v sadě tříd uvedených v souboru csv.
    . Popis
    Přečte podrobnosti třída uživatele ze souboru csv zadávání. Získání přiřazení a odeslání jednotlivých přiřazení a vygeneruje file(GetAssignmentsReport.csv) přiřazení file(assignment.json) a sestavy. Po dokončení extrahování argumenty aktualizuje sloupci GetSubmissionsProcessed pro konkrétní třídy true (pravda). Když skript nepovede mezi jsme spusťte skript souborem stejné vstupní, protože soubor bude aktualizován pro poslední odstranění odeslání.
   . Příklad
    .\Export-EduAssignments.ps1 - userClassDetailsFile < úplnou cestu soubor csv podrobnosti třída uživatele >
   . Parametr userClassDetailsFile
   Toto je file(userClassDetails.csv) csv, který je výstupu Get-UserClasses.ps1 skriptu. Tento soubor mít informace o tříd uživatelů a jestli jsou zpracovány odeslání odstranění a načíst. Tato hodnota musí být úplnou cestu file(drive:\GDPR\userClassDetails.csv)
   . Poznámky
   Potřebujeme mít Microsoft.IdentityModel.Clients.ActiveDirectory.dll a Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll jsou potřeba
#>
parametr (
    [parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Pokud (-ne ($_ | Test-Path)) {
            vyvolat "userClassDetailsFile neexistuje."
        }
        Pokud (-ne ($_ | Test-Path - PathType listu)) {
            Vyvolejte "userClassDetailsFile argument musí být soubor. Cesty složky nejsou povolené."
        }
        Pokud ($_ - notmatch "(\.csv)") {
            vyvolat "userClassDetailsFile by měl být soubor hodnotami oddělenými čárkou, generovaný pomocí Get-UserClasses.ps1"
        }
        vrátí $true
    })]
    [řetězec] $userClassDetailsFile
)

# Načíst ADAL
Přidání typu-cestu ".\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 authheaders
Funkce Get-AuthHeaders
{
    Parametr (
        [Parameter(Mandatory=$false)]
        [logická hodnota] $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = nový objekt System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = nový objekt "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - ArgumentList $authString
    Pokud ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint $clientID, $redirectURI, $promptBehavior)
    }
    dalšího
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Se tak mohli ověřovat" = $authHeader; "Typ obsahu" = "Aplikace/json"}
    Vrátí $headers
}

Protokolování chyb pro skriptu a #Retry logiky
funkce vyvolat RequestWithRetry
{
    parametr (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className,
        [Parameter(Mandatory=$true)] $OperationName
    )

pro ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        Zkuste
        {
            $APIResult = vyvolat WebRequest-Metoda Get - identifikátor Uri $url-záhlaví $script: authHeaders
            $resultCount = 0
            Pokud ($OperationName - eq "GetAssignments")
            {
                $valueStartIndex = ($APIResult.content.indexof('"value":') + 8)
                $valueEndIndex = $APIResult.content.Length
                $valueString = $APIResult.content.substring ($valueStartIndex, $valueEndIndex $valueStartIndex -1)
                $resultCount = (($valuestring | vyberte řetězec ' "ID třídy": "- AllMatches). Matches.Count)
            }
            dalšího
            {
                $submissionsJson = $APIResult.content | ConvertFrom Json
                $resultCount = $submissionsJson.value.count
            }

$script: getAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Metoda = "Získat"
                ResponseCode = $APIResult.StatusCode
                Název třídy = $className
                ID třídy = $classId
                ID žádosti = $APIResult.Headers ["žádost o id"]
                Popis_stavu = $APIResult.StatusDescription
                NumberOfAttempts = $i
                Název operace = $OperationName
                ResultCount = $resultCount
            }
            Vrátí $APIResult
        }
        zachycení
        {
            If($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["žádost o id"]
            }

            $script: getAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Metoda = "Získat"
                ResponseCode = $responseCode
                Název třídy = $className
                ID třídy = $classId
                ID žádosti = $requestId
                Popis_stavu = $_. Exception.Message
                NumberOfAttempts = $i
                Název operace = $OperationName
                ResultCount = $resultCount
            }            

Pokud ($i - eq $script: maxRetryAttempt)
            {
                vyvolat $_
            }

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

přiřazení #get
Funkce Get-přiřazení
{
    parametr (
        [Parameter(Mandatory=$true)] $classDetails
    )
    Zkuste
    {
        $classId = $classDetails.ClassId
        $userId = $classDetails.UserId
        $role = $classDetails.Role
        $className = $classId
        Pokud ($classDetails.ClassName - ne $null- a $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 = vyvolat RequestWithRetry-adresy url $getAssignmentsUri – ID třídy $classId – název třídy $className – název operace "GetAssignments"
        $outputstring = ""
        Pokud ($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 | vyberte řetězec ' "ID třídy": "- AllMatches). Matches.Index)
            Zápis hostitele "$($indexValues.count) Retrieved přiřazení $className třídy"
            $assignmentsStrings = @ ()
            pro ($i = 0; - lt $indexValues.count $i; $i ++)
            {
                Pokud ($i - ne $indexValues.count -1)
                {
                    $assignmentsStrings += $valueString.substring (($indexValues [$i] -1), ($indexValues [$i + 1] - $indexValues [$i] -1))
                }
                dalšího
                {
                    $assignmentsStrings += $valueString.substring(($indexValues[$i]-1) ($valueString.Length - $indexValues [$i] + 1))
                }

                Pokud ($role - eq "Student")
                {
                    $submissionsIndex = $assignmentsStrings[$i].indexof('"submissions":[')
                    $assignmentsStrings [$i] = [$i] $assignmentsStrings .substring (0, $submissionsIndex + 15)
                    $assignmentsStrings [$i] = $assignmentsStrings [$i] + "]}"
                }
            }
            pro ($i = 0; - lt $assignmentsStrings.Length $i; $i ++)
            {
                $assignmentString = $assignmentsStrings [$i]
                $assignmentJson = $assignmentString | ConvertFrom Json
                $assignmentId = $assignmentJson.id
                Zápis hostitele "Začínáme odeslání $($assignmentJson.displayName) přiřazení"
                $sumbmissionsEndpoint = ("{0} / classes('{1}')/assignments('{2}')/submissions?TargetUserId = {3} & UserClassRole = {4}" -f $educationEndpoint, $classId $assignmentId, $userId, $role)
                $submissions = vyvolat RequestWithRetry – ID třídy $classId-adresy url $sumbmissionsEndpoint – název třídy $className – název operace "GetSubmissions"
                Pokud ($submissions - ne $null- a $submissions. Content.Length - ne 0)
                {
                    $submissionsJson = $submissions.content | ConvertFrom Json
                    Zápis hostitele "Retrieved $($submissionsJson.value.count) odeslání $($assignmentJson.displayName) přiřazení"
                    $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 = "["
            Pokud ($assignmentsStrings.Length - eq 0)
            {
                $completeAssigmentsString = $completeAssigmentsString + "]"
            }
            dalšího
            {
                pro ($i = 0; - lt $assignmentsStrings.Length $i; $i ++)
                {
                    Pokud ($i - eq $assignmentsStrings.Length -1)
                    {
                        $completeAssigmentsString = $completeAssigmentsString + $assignmentsStrings [$i] + "]"
                    }
                    dalšího
                    {
                        $completeAssigmentsString = $completeAssigmentsString $assignmentsStrings [$i] + ","
                    }
                }
            }
            $outputstring = "{"ID třídy":" "+ $classId +" "," název třídy":" "+ $className +" "," přiřazení":" + $completeAssigmentsString + "}"
            $dateTimeStamp = $(datum get - f yyyy-MM-dd)
            $fileName = $directoryPath "\" + $className + "_" + $userId + "_" + $dateTimeStamp + ".json"
            $outputstring | Odchozí souboru $fileName
            Zápis Host("Assignments file for $className is generated at $fileName")
            $classDetails.GetSubmissionsProcessed = "True"
            $script: userClassDetails | Export souboru Csv – cesta $($directoryPathOfFile) - NoTypeInformation – vyšší
        }
    }
    zachycení
    {
        Chyba při zápisu $_. Exception.Message
    }

}                                           

$directoryPathOfFile = (položkou get-$($userClassDetailsFile) cesta). FullName
$directoryPath = (položkou get-cestu ". \"-podrobného). FullName
$script: authHeaders = Get-AuthHeaders
$script: userClassDetails = $userClassDetailsFile import souboru csv

$progressTracker = 1;
#loop přes každý řádek a získat odeslání getsubmissionsprocessed sloupec je NEPRAVDA
foreach ($classDetail v $script: userClassDetails)
{
    Zápis průběh-aktivity "Začínáme přiřazení pro uživatele"-stav "zpracování třídy: $($classDetail.classId)" - procento dokončení ($progressTracker / $($skriptů: userClassDetails | Measure-Object) .count * 100)
    Pokud ($classDetail.GetSubmissionsProcessed - eq "False")
    {
        Zápis hostitele "Zobrazuje přiřazení $($classDetail.ClassName)"
        Přiřazení Get - classDetails $classDetail
    }
    $progressTracker ++
}

$script: getAssignmentsReport | Export souboru Csv – cesta.\GetAssignmentsReport.csv - NoTypeInformation
Zápis hostitele "Výkaz o file(GetAssignmentsReport.csv) je generováno v $directoryPath\GetAssignmentsReport.csv"
Zápis hostitele "podrobnosti třída aktualizované file($($directoryPathOfFile)) a vygenerovaných doplněný soubor v $($directoryPathOfFile)"

Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×