Tehtävät-komentosarjat - poistaminen

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.

Liitetty power shell-komentosarjoja koskevat Poista - EDU varaukset-vienti - EDU tehtävät ja Get - käyttäjän luokat.

Poista - EDU tehtävät

< #
   . Yhteenvedon
    Poistaa käyttäjän luokkien csv-tiedoston määritetyn joukon 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 poista lähetysten, se luo raportti-file(DeleteAssignmentsReport.csv) puhelutiedot ylimääräisiä tietoja. Kun lähetyksen poisto on valmis päivittymään DeleteSubmissionsProcessed 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
    .\Delete-EduAssignments.ps1 - userClassDetailsFile < käyttäjän luokan tiedot csv-tiedoston koko polku >
    Tämä poistaa kaikki lähetysten mutta ei poista käyttäjätiedot luokan
    .\Delete-EduAssignments.ps1 - userClassDetailsFile < käyttäjän luokan tiedot csv-tiedoston koko polku > - removeMemberFromClass
    Tämä poistaa kaikki lähetysten ja poistaa käyttäjätiedot luokan
   . 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)
   . Vaihda parametrin removeMemberFromClass
   Kun tämä parametri Käytämme se poistaa käyttäjätiedot kunkin luokan
   . 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,

[parameter(Mandatory=$false)]
    Vaihda $removeMemberFromClass
)
# Ladata ADAL
Lisää tyyppi-polku ”.\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 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=$true)] [ValidateSet (”Get-lauseeseen, poista, ohitaKoko = $true)] $httpmethod,
        Parameter(Mandatory=$false) $classId,
        Parameter(Mandatory=$false) $className,
        Parameter(Mandatory=$true) $OperationName
    )

($i = 1; $i-tiedostoon $script: maxRetryAttempt; $i ++)
    {
        Kokeile
        {
            $APIResult = Käynnistä WebRequest-menetelmä $httpmethod - Uri $url-otsikot $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: deleteAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Menetelmä = $httpmethod
                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: deleteAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Menetelmä = $httpmethod
                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
            }
        }
    }
}

Luokan jäsenen #Remove
toimi Poista MemberFromClass
{
    parametri (
        Parameter(Mandatory=$true) $classDetails
    )

$removeMemberUrl = ”{0}/v1.0/groups/{1}/members/{2}/'$ref” -f $graphEndpoint, $($classDetails.ClassId), $($classDetails.UserId)
    Kokeile
    {
        Käynnistää RequestWithRetry-URL-osoite $removeMemberUrl - HttpMethod-arvo Poista - classId $($classDetails.ClassId) - LuokanNimi $($classDetails.ClassName) - OperationName ”RemoveMemberfromClass” | Vanhenee Null
    }
    todellisen
    {
        Palauttaa $_
    }

}    

toimi Poista varaukset
{
    parametri (
        Parameter(Mandatory=$true) $classDetail
    )

Kokeile
    {
        $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 = Käynnistä RequestWithRetry-URL-osoite $getAssignmentsUri - HttpMethod-arvo Hae - classId $classId - LuokanNimi $className - OperationName ”GetAssignments”
        Jos ($assignments - ne $null- ja $assignments.content - ne $null- ja $role - eq ”opiskelijoiden”))
        {
            $assignmentsCount = ((($assignments.content) | ConvertFrom-Json) .value) .count
            Kirjoita-Host ”Retrieved $assignmentsCount varaukset $className luokalle”
            $assignmentsTracker = 0
            foreach ($assignment: (($assignments.content) | ConvertFrom-Json) .value)
            {
                $assignmentName = $assignment.displayName
                $assignmentId = $assignment.id
                $submissions = $assignment.submissions
                Kirjoita-Host ”poistaminen $($assignmentName) lähetysten”
                $submissionsTracker = 0
                foreach ($submission $submissions)
                {
                    $deleteSDSSubmissionUri = ”{0} / beta/education/luokkien / {1} /assignments/ {2} /submissions/ {3} ?TargetUserId = 4} & UserClassRole = Student” -f $graphEndpoint, $classId, $assignmentId, $($submission.id), $userId
                    Jos (($submissionsTracker - eq ($submissions. Pituus -1))- ja ($assignmentsTracker - eq ($assignmentsCount - 1))- ja ($removeMemberFromClass.IsPresent))
                    {
                        Kirjoita-Host ”poistaminen lähetys- ja classinfo käyttäjän”
                        $deleteSDSSubmissionUri = $deleteSDSSubmissionUri + ”& CleanupUserClassData = true”
                    }
                    $deleteResponse = Käynnistä RequestWithRetry-URL-osoite $deleteSDSSubmissionUri - HttpMethod-arvo poistaa - classId $classId - LuokanNimi $className - OperationName ”DeleteSubmission”
                    Jos ($deleteResponse - ne $null- ja $deleteResponse.Content.Length - ne 0 - ja $submissionsTracker - eq ($submissions. Pituus -1))
                    {
                        $classDetail.DeleteSubmissionsProcessed = ”true”
                        $script: userClassDetails | Vie Csv-polku $($directoryPathOfFile) - NoTypeInformation-voimassa
                    }
                    $submissionsTracker ++
                }
                $assignmentsTracker ++
            }
        }
    }
    todellisen
    {   
        Palauttaa $_
    }
}

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

$progressTracker = 0;
foreach ($classDetail $script: userClassDetails)
{
    Kirjoita käynnissä-tehtävän ”poistaminen varausten käyttäjä”-tila ”luokan käsittelyyn: $classDetail.classId” - PercentComplete ($progressTracker/$script:userClassDetails.count * 100)
    Jos ($classDetail.DeleteSubmissionsProcessed - eq ”False”)
    {
        Kokeile
        {
            IF($removeMemberFromClass.IsPresent)
            {
                Kirjoita-Host ”poistaminen käyttäjältä $($classDetail.ClassName)”
                Poista MemberFromClass - classDetails $classDetail
            }
            Kirjoita-host ”poistaminen varaukset käyttäjän $ ($classDetails.ClassName)”
            Poista tehtävät - classDetails $classDetail
        }
        todellisen
        {
            Kirjoitusvirhe $_. Exception.Message
        }
    }
    $progressTracker ++
}

$directoryPath = (Hae kohde-polku ”. \”-yksityiskohtainen). Nimi
$script: deleteAssignmentsReport | Vie Csv-polku.\DeleteAssignmentsReport.csv - NoTypeInformation-voimassa
Kirjoita-Host ”raportin file(DeleteAssignmentsReport.csv) luodaan $directoryPath\DeleteAssignmentsReport.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ä.

×