Přiřazení skripty – odstranění

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 .

Připojené jsou skriptů prostředí power k odstranění - EDU přiřazení, třídy exporty - EDU přiřazení a Get - uživatelů.

Odstranit - přiřazení EDU

< #
   . Souhrn
    Odstranění 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 potom odstraňte odeslání, také vygenerovat sestavu file(DeleteAssignmentsReport.csv) dodatečné informace informací o volání. Po dokončení odstranění odeslání aktualizuje sloupci DeleteSubmissionsProcessed 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
    .\Delete-EduAssignments.ps1 - userClassDetailsFile < úplnou cestu soubor csv podrobnosti třída uživatele >
    To se odstraní všechna odeslání, ale neodebírat informace o uživateli z třídy
    .\Delete-EduAssignments.ps1 - userClassDetailsFile < úplnou cestu soubor csv podrobnosti třída uživatele > - removeMemberFromClass
    Tím odstranit všechna odeslání a odebrat informace o uživateli z třídy
   . 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)
   . Přepnutí parametr removeMemberFromClass
   Použijete-li jsme tento parametr odeberete informace o uživateli z jednotlivé třídy
   . 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,

[parameter(Mandatory=$false)]
    [přepínače] $removeMemberFromClass
)
# Načíst ADAL
Přidání typu-cestu ".\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
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=$true)] [ValidateSet ("Get", "Odstranit", ignorecase = $true)] $httpmethod,
        [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 $httpmethod - 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: deleteAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Metoda = $httpmethod
                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: deleteAssignmentsReport += [PSCustomObject] @{
                RequestUrl = $url
                Metoda = $httpmethod
                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
            }
        }
    }
}

Člen #Remove z třídy
funkce odebrat MemberFromClass
{
    parametr (
        [Parameter(Mandatory=$true)] $classDetails
    )

$removeMemberUrl = "{0}/v1.0/groups/{1}/members/{2}/'$ref" -f $graphEndpoint, $($classDetails.ClassId), $($classDetails.UserId)
    Zkuste
    {
        Vyvolání RequestWithRetry-adresy url $removeMemberUrl - vlastnost httpmethod odstranit ID – třídy $($classDetails.ClassId) – název třídy $($classDetails.ClassName) – název operace "RemoveMemberfromClass" | Odchozí Null
    }
    zachycení
    {
        vyvolat $_
    }

}    

Funkce odstranit přiřazení
{
    parametr (
        [Parameter(Mandatory=$true)] $classDetail
    )

Zkuste
    {
        $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 = vyvolat RequestWithRetry-vlastnost adresa url $getAssignmentsUri - httpmethod získat název – ID třídy $classId - třídy $className – název operace "GetAssignments"
        Pokud ($assignments - ne $null- a $assignments.content - ne $null- a $role - eq "Student"))
        {
            $assignmentsCount = ((($assignments.content) | ConvertFrom-Json) .value) .count
            Zápis hostitele "Retrieved $assignmentsCount přiřazení $className předmětu"
            $assignmentsTracker = 0
            foreach ($assignment v (($assignments.content) | ConvertFrom-Json) .value)
            {
                $assignmentName = $assignment.displayName
                $assignmentId = $assignment.id
                $submissions = $assignment.submissions
                Zápis hostitele "Odstranění odeslání $($assignmentName)"
                $submissionsTracker = 0
                foreach ($submission v $submissions)
                {
                    $deleteSDSSubmissionUri = "{0} / beta/education/třídy / {1} /assignments/ {2} /submissions/ {3} ?TargetUserId = {4} & UserClassRole = Student" -f $graphEndpoint, $classId $assignmentId, $($submission.id), $userId
                    Pokud (($submissionsTracker - eq ($submissions. Délka -1)) – a ($assignmentsTracker - eq ($assignmentsCount - 1)) – a ($removeMemberFromClass.IsPresent))
                    {
                        Zápis hostitele "odstranění žádosti a classinfo pro uživatele"
                        $deleteSDSSubmissionUri = $deleteSDSSubmissionUri + "& CleanupUserClassData = true"
                    }
                    $deleteResponse = vyvolat RequestWithRetry-vlastnost adresa url $deleteSDSSubmissionUri - httpmethod odstranit název – ID třídy $classId - třídy $className – název operace "DeleteSubmission"
                    Pokud ($deleteResponse - ne $null- a $deleteResponse.Content.Length - ne 0 - a $submissionsTracker - eq ($submissions. Délka -1))
                    {
                        $classDetail.DeleteSubmissionsProcessed = "True"
                        $script: userClassDetails | Export souboru Csv – cesta $($directoryPathOfFile) - NoTypeInformation – vyšší
                    }
                    $submissionsTracker ++
                }
                $assignmentsTracker ++
            }
        }
    }
    zachycení
    {   
        vyvolat $_
    }
}

$directoryPathOfFile = (položkou get-$($userClassDetailsFile) cesta). FullName
$script: authHeaders = Get-AuthHeaders
$script: userClassDetails = $userClassDetailsFile import souboru csv

$progressTracker = 0;
foreach ($classDetail v $script: userClassDetails)
{
    Zápis průběh-aktivity "Odstranění přiřazení pro uživatele"-stav "zpracování třídy: $classDetail.classId" - procento dokončení ($progressTracker/$script:userClassDetails.count * 100)
    Pokud ($classDetail.DeleteSubmissionsProcessed - eq "False")
    {
        Zkuste
        {
            If($removeMemberFromClass.IsPresent)
            {
                Zápis hostitele "Odstranění uživatelům $($classDetail.ClassName)"
                Odebrat MemberFromClass - classDetails $classDetail
            }
            Zápis hostitele "Odstranění přiřazení uživatele pro $($classDetails.ClassName)"
            Odstranit přiřazení - classDetails $classDetail
        }
        zachycení
        {
            Chyba při zápisu $_. Exception.Message
        }
    }
    $progressTracker ++
}

$directoryPath = (položkou get-cestu ". \"-podrobného). FullName
$script: deleteAssignmentsReport | Export souboru Csv – cesta.\DeleteAssignmentsReport.csv - NoTypeInformation – vyšší
Zápis hostitele "Výkaz o file(DeleteAssignmentsReport.csv) je generováno v $directoryPath\DeleteAssignmentsReport.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.

×