Tehtävät-komentosarjat - vienti

Huomautus: Microsoft haluaa tarjota sinulle ajantasaisinta ohjesisältöä mahdollisimman nopeasti omalla kielelläsi. Tämä sivu on käännetty automaation avulla, ja siinä saattaa olla kielioppivirheitä tai epätarkkuuksia. Tarkoitus on, että sisällöstä on sinulle hyötyä. Kertoisitko sivun alareunassa olevan toiminnon avulla, oliko tiedoista hyötyä? Tästä pääset helposti artikkelin englanninkieliseen versioon.

Vienti - EDU tehtävät

< #
   . Yhteenvedon
    Vie määritetyn csv-tiedoston luokkien määrittäminen käyttäjän Edu varaukset-tiedot.
    . KUVAUS
    Komentosarja lukee luokan tietoja käyttäjän syötteen csv-tiedostosta. Tehtävien ja kunkin tehtävän lähetykset ja luo tehtävän file(assignment.json) ja raportin file(GetAssignmentsReport.csv). Kun lähetysten, joka poimii on valmis päivittymään GetSubmissionsProcessed sarakkeen kyseisen tietyn luokan tosi. Jos komentosarja epäonnistuu välillä on suorittamalla komentosarja syötteen saman tiedoston koska tiedosto päivitetään lähetyksen viimeisen poistamista varten.
   . Esimerkki
    .\Export-EduAssignments.ps1 - userClassDetailsFile < käyttäjän luokan tiedot csv-tiedoston koko polku >
   . Parametrin userClassDetailsFile
   Tämä on csv-file(userClassDetails.csv) Get-UserClasses.ps1 komentosarjan tulosteen eli. Tämä tiedosto on tietoja käyttäjän luokkia ja onko poistaminen ja Hae lähetykset käsitellään. Tämän arvon pitäisi olla koko polku file(drive:\GDPR\userClassDetails.csv)
   . Muistiinpanojen
   Microsoft.IdentityModel.Clients.ActiveDirectory.dll on annettava ja Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll tarvittavat
#>
parametri (
    [parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Jos (-ei ($_ | Test-Path)) {
            Palauttaa ”userClassDetailsFile ei ole olemassa”.
        }
        Jos (-ei ($_ | Test-Path - PathType lehdet)) {
            Palauttaa ”userClassDetailsFile-argumentin on oltava tiedoston. Kansion polut ei sallita ”.
        }
        Jos ($_ - notmatch ”(\.csv)”) {
            Palauttaa ”userClassDetailsFile pitäisi olla CSV tiedostoon, luotu Get-UserClasses.ps1”
        }
        Palauttaa $true
    })]
    merkkijono $userClassDetailsFile
)

# Ladata ADAL
Lisää tyyppi-polku ”.\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
toimi Get-AuthHeaders
{
    Parametri (
        [Parameter(Mandatory=$false)]
        bool $useRefreshToken = $false
    )
    $clientId = ”eb2298a1-a6bb-4f16-a27a-b582815db47b”
    $redirectURI = uusi objektin System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = uusi objekti ”Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext” - ArgumentList $authString
    Jos ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    muita
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + ”” + $script:authenticationResult.AccessToken
    $headers = @{”lupa” = $authHeader; ”Sisältötyypin” = ”sovelluksen/json”}
    Palauttaa $headers
}

#Retry logiikka ja kirjaaminen komentosarjan virheet
toimi Käynnistä RequestWithRetry
{
    parametri (
        Parameter(Mandatory=$true) $url,
        Parameter(Mandatory=$false) $classId,
        Parameter(Mandatory=$false) $className,
        Parameter(Mandatory=$true) $OperationName
    )

($i = 1; $i-tiedostoon $script: maxRetryAttempt; $i ++)
    {
        Kokeile
        {
            $APIResult = Käynnistä WebRequest-$url menetelmä Hanki - Uri-otsikoiden $script: authHeaders
            $resultCount = 0
            Jos ($OperationName - eq ”GetAssignments”)
            {
                $valueStartIndex = ($APIResult.content.indexof('"value":') + 8)
                $valueEndIndex = $APIResult.content.Length
                $valueString $APIResult.content.substring ($valueStartIndex $valueEndIndex $valueStartIndex -1) =
                $resultCount = (($valuestring | Valitse merkkijonon ”” classId ””: - AllMatches). Matches.Count)
            }
            muita
            {
                $submissionsJson = $APIResult.content | ConvertFrom Json
                $resultCount = $submissionsJson.value.count
            }

$script: getAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Menetelmä = ”Hanki-
                ResponseCode = $APIResult.StatusCode
                LuokanNimi = $className
                ClassId = $classId
                Pyyntötunnus $APIResult.Headers [”pyynnön-tunnus”] =
                TilanKuvaus = $APIResult.StatusDescription
                NumberOfAttempts = $i
                OperationName = $OperationName
                ResultCount = $resultCount
            }
            Palauttaa $APIResult
        }
        todellisen
        {
            IF($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers [”pyynnön-tunnus”]
            }

            $script: getAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Menetelmä = ”Hanki-
                ResponseCode = $responseCode
                LuokanNimi = $className
                ClassId = $classId
                Pyyntötunnus = $requestId
                TilanKuvaus = $_. Exception.Message
                NumberOfAttempts = $i
                OperationName = $OperationName
                ResultCount = $resultCount
            }            

Jos ($i - eq $script: maxRetryAttempt)
            {
                Palauttaa $_
            }

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

#get varaukset
toimi Get varaukset
{
    parametri (
        Parameter(Mandatory=$true) $classDetails
    )
    Kokeile
    {
        $classId = $classDetails.ClassId
        $userId = $classDetails.UserId
        $role = $classDetails.Role
        $className = $classId
        Jos ($classDetails.ClassName - ne $null- ja $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 = Käynnistä RequestWithRetry-url $getAssignmentsUri - classId $classId - LuokanNimi $className - OperationName ”GetAssignments”
        $outputstring = ””
        Jos ($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 | Valitse merkkijonon ”” classId ””: - AllMatches). Matches.Index)
            Kirjoita-Host ”Retrieved $($indexValues.count) varaukset $className luokalle”
            $assignmentsStrings = @ ()
            ($i = 0; $i - lt $indexValues.count; $i ++)
            {
                Jos ($i - ne $indexValues.count -1)
                {
                    $assignmentsStrings += $valueString.substring (($indexValues [$i] -1)-($indexValues [$i + 1] - $indexValues [$i] -1))
                }
                muita
                {
                    $assignmentsStrings += $valueString.substring(($indexValues[$i]-1) ($valueString.Length - $indexValues [$i] + 1))
                }

                Jos ($role - eq ”opiskelijoiden”)
                {
                    $submissionsIndex = $assignmentsStrings[$i].indexof('"submissions":[')
                    $assignmentsStrings [$i] = [$i] $assignmentsStrings .substring (0, $submissionsIndex + 15)
                    $assignmentsStrings [$i] = $assignmentsStrings [$i] + ”]}”
                }
            }
            ($i = 0; $i - lt $assignmentsStrings.Length; $i ++)
            {
                $assignmentString $assignmentsStrings [$i] =
                $assignmentJson = $assignmentString | ConvertFrom Json
                $assignmentId = $assignmentJson.id
                Kirjoita-Host ”käytön lähetysten $($assignmentJson.displayName) varauksen”
                $sumbmissionsEndpoint = (”{0} / classes('{1}')/assignments('{2}')/submissions?TargetUserId = {3} & UserClassRole = 4}” -f $educationEndpoint, $classId $assignmentId, $userId, $role)
                $submissions = Käynnistä RequestWithRetry - classId $classId-url $sumbmissionsEndpoint - LuokanNimi $className - OperationName ”GetSubmissions”
                Jos ($submissions - ne $null- ja $submissions. Content.Length - ne 0)
                {
                    $submissionsJson = $submissions.content | ConvertFrom Json
                    Kirjoita-Host ”Retrieved $($submissionsJson.value.count) lähetysten $($assignmentJson.displayName) varauksen”
                    $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 = ”[”
            Jos ($assignmentsStrings.Length - eq 0)
            {
                $completeAssigmentsString = $completeAssigmentsString + ”]”
            }
            muita
            {
                ($i = 0; $i - lt $assignmentsStrings.Length; $i ++)
                {
                    Jos ($i - eq $assignmentsStrings.Length -1)
                    {
                        $completeAssigmentsString = $completeAssigmentsString + $assignmentsStrings [$i] + ”]”
                    }
                    muita
                    {
                        $completeAssigmentsString = $completeAssigmentsString + $assignmentsStrings [$i] + ””,
                    }
                }
            }
            $outputstring = ' {”ClassId” ”:” + $classId + ”” ”, LuokanNimi” ”:” + $className + ”” ”, tehtävät” ”: + $completeAssigmentsString + '}'
            $dateTimeStamp = $(Hae alusta alkaen - f yyyy-MM-dd)
            $fileName = $directoryPath + ”\” + $className + ”_” + $userId + ”_” + $dateTimeStamp + ”.json”
            $outputstring | Tiedosto vanhenee $fileName
            Kirjoita Host("Assignments file for $className is generated at $fileName")
            $classDetails.GetSubmissionsProcessed = ”true”
            $script: userClassDetails | Vie Csv-polku $($directoryPathOfFile) - NoTypeInformation-voimassa
        }
    }
    todellisen
    {
        Kirjoitusvirhe $_. Exception.Message
    }

}                                           

$directoryPathOfFile = (Hae kohde-polku $($userClassDetailsFile)). Nimi
$directoryPath = (Hae kohde-polku ”. \”-yksityiskohtainen). Nimi
$script: authHeaders = Get-AuthHeaders
$script: userClassDetails = tuonti csv $userClassDetailsFile

$progressTracker = 1.
#loop jokaisen rivin ja poistaa lähetysten, jos getsubmissionsprocessed-sarakkeen arvo on EPÄTOSI
foreach ($classDetail $script: userClassDetails)
{
    Kirjoita käynnissä-tehtävän ”käytön varausten käyttäjä”-tila ”luokan käsittelyyn: $($classDetail.classId)” - PercentComplete ($progressTracker / $($komentosarja: userClassDetails | Measure-Object) .count * 100)
    Jos ($classDetail.GetSubmissionsProcessed - eq ”False”)
    {
        Kirjoita-host ”$($classDetail.ClassName) käytön varauksia”
        Hae varaukset - classDetails $classDetail
    }
    $progressTracker ++
}

$script: getAssignmentsReport | Vie Csv-polku.\GetAssignmentsReport.csv - NoTypeInformation
Kirjoita-Host ”raportin file(GetAssignmentsReport.csv) luodaan $directoryPath\GetAssignmentsReport.csv osoitteessa”
Kirjoita isäntänimi ”Updated luokan tiedot file($($directoryPathOfFile)) ja $($directoryPathOfFile) on muodostetut päivitetyn tiedoston”

Kehitä Office-taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×