Přiřazení skripty - Get

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 pro Get - třídy uživatelů

< #
   . Souhrn
    Získáte informace o uživateli třídy jako v které třídy je uživatel členem a co je roli uživatele v těchto tříd.
    . Popis
    Skripty přečte soubor a získat všechny ID třídy a aktualizace roli s userrole uvedené, pokud nejsou uvedené přiřadit student, je ve výchozím nastavení. Potom nenarazí tříd, ve kterých je uživatel vlastník a uživatel, kde je členem. Skript také upravuje a vygeneruje výstupu s podrobnosti třída a role uživatele v konkrétní třídy.
   . Příklad
    .\Get-userClasses.ps1 – ID < konkrétní Id uživatele >
        Tím se zobrazí podrobnosti uživatele podle členství uživatelů
    .\Get-userClasses.ps1 – ID < konkrétní Id uživatele > - classIdsFile < csv úplnou cestu k souboru >
        To pošle podrobnosti uživatele tříd podle členství v souboru a uživatel csv, pokud jsme není předat parametr userRole, to se automaticky přiřadí Student výchozí ID třídy zadané v souboru csv
    .\Get-userClasses.ps1 – ID < konkrétní Id uživatele > - classIdsFile < csv úplnou cestu k souboru > - userrole < Student nebo učitel >
        To vám pomohou podrobnosti uživatele tříd podle členství csv souborů a uživatele. Pro zadaný v souboru ID třídy vygeneruje se uživatelská data podle userrole zadané (učitel nebo Student)
   . Parametr ID
   ID uživatele exportovat a odstraňovat odeslání
   . Parametr classIdsFile
   Úplnou cestu k souboru ve formátu prostého textu, která obsahuje jediný ID třídy na každém řádku.
   Ukázkový seznam ID třídy. Každý řádek by měla být jeden ID třídy
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parametr userrole
   Tento parmeter slouží k určení role uživatele, aby se dá použít pro účastní classIdsFile třídy ID a uživatel jsou odebrány z třídy.
   .paramter Název_výstupního_souboru
   Tento parametr používá k název výstupní soubor skriptu žádná rozšíření. Toto není mandatorty ve výchozím nastavení je v poli Název souboru výstup UserClassDetails
   . Poznámky
   Potřebujeme mít Microsoft.IdentityModel.Clients.ActiveDirectory.dll a Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll jsou potřeba
#>
parametr (
    [Parametr (povinné = $true, pozice = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Zkuste {
            [System.Guid]::Parse($_) | Odchozí Null
            $true
        } zachytit {
            vyvolat $_
        }
    })]
    [řetězec] $userId,

[parametr (povinné = $false, pozice = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Pokud (-ne ($_ | Test-Path)) {
            vyvolat "soubor nebo složka dosud neexistuje"
        }
        Pokud (-ne ($_ | Test-Path - PathType listu)) {
            Vyvolejte "classIdsFile argument musí být soubor. Cesty složky nejsou povolené."
        }
        Pokud ($_ - notmatch "(\.txt)") {
            vyvolat "soubor určený argumentem cesta musí být typ txt"
        }
        vrátí $true
    })]
    [řetězec] $classIdsFile,

[Parametr (povinné = $false, pozice = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ("Student", "Učitel" ignorecase = $false)]
    [řetězec] $userrole = "Student"

[parametr (povinné = $false, pozice = 4)]
    [ValidateNotNullOrEmpty()]
    [řetězec] $outputFileName = "UserClassDetails"
)
# Načíst ADAL
Přidání typu-cestu ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

$script: maxRetryAttempt = 3
$script: authenticationResult = $null
$graphEndpoint = "https://graph.microsoft.com"
$authString = "https://login.windows.net/common"

# Výstup shrnutí úspěch/selhání volání rozhraní API.
$script: getClassDetailsReport = @)

Žádost o #Makes web a protokoly stav odpovědi
funkce vyvolat RequestWithRetry
{
    parametr (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

pro ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        Zkuste
        {
            $tempResult = vyvolat WebRequest-Metoda Get - identifikátor Uri $url-záhlaví $script: authHeaders
            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Metoda = "Získat"
                ResponseCode = $tempResult.StatusCode
                Název třídy = $className
                ID třídy = $classId
                ID žádosti = $tempResult.Headers ["žádost o id"]
                Popis_stavu = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            Vrátí $tempResult
        }
        zachycení
        {
            If($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["žádost o id"]
            }

            $script: getClassDetailsReport += [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
            }            

Pokud ($i - eq $script: maxRetryAttempt)
            {
                vyvoláním $_. Exception.Message
            }

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

#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
}

#Get skupinu název
Funkce Get-název třídy
{
    parametr (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl = "{0}/v1.0/groups/{1}" -f $graphEndpoint, $classId
    $getClassDetailsResult = (vyvolat RequestWithRetry-adresy url $getClassDetailsUrl) | ConvertFrom Json
    $className = $getclassDetailsResult.displayName
    Vrátí $className
}

Podrobnosti o vlastnictví #Get ID uživatele pomocí edu endpoit a Upřesnit s vystavením zadejte přiřazení
Funkce Get-OwnershipDetails
{
    parametr (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / edu/uživatelé / {1} / ownedobjects?" $top = 999 "-f $graphEndpoint, $userId)
    $ownershipQuery = (vyvolat RequestWithRetry-adresy url $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | Kde objekt {$_.creationOptions-obsahuje "classAssignments"} | Vyberte objekt objektu, displayName
    Vrátí $classes
}

#Get členství podrobnosti id uživatele pomocí edu koncového bodu a Upřesnit s vystavením zadejte přiřazení
Funkce Get-MembershipDetails
{
    parametr (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / edu/uživatelé / {1} / memberof?" $top = 999 "-f $graphEndpoint, $userId)
    $membershipQuery = (vyvolat RequestWithRetry-adresy url $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | Kde objekt {$_.creationOptions-obsahuje "classAssignments"} | Vyberte objekt objektu, displayName
    Vrátí $classes
}

#Return vlastní pscutom objekt, který mají ID třídy, ID uživatele, název třídy, role, getsubmissionprocessed a deletesubmissionprocessed vlastnosti
Funkce Generate ClassRecord
{
    parametr (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        ID třídy = $classId
        ID uživatele = $userId
        Název třídy = $displayName
        Role = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

Vrátí $classRecord
}

$script: authHeaders = Get-AuthHeaders

# To bude obsahovat podrobnosti o všech "zajímavé" tříd
$script: classDetails = @ {}

# Najít vlastní třídy (Pokud je uživatel může učitel)
Zkuste
{
    $ownedClasses = get-OwnershipDetails – ID $userId
    foreach ($class v $ownedClasses)
    {
        Pokud (-ne $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = generovat ClassRecord – ID $userId ID – třídy $class.objectId-role "Učitel" - displayName $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
zachycení
{
    Chyba při zápisu $_. Exception.Message
}

# Najít připojen skupiny (Pokud je uživatel student)
Zkuste
{
    $joinedClasses = get-MembershipDetails – ID $userId
    foreach ($class v $joinedClasses)
    {
        Pokud (-ne $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = generovat ClassRecord – ID $userId ID – třídy $class.objectId-role "Student" - displayName $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
zachycení
{
    Chyba při zápisu $_. Exception.Message
}

# Podrobné informace o najdete další skupiny ze souboru.
If(![ řetězec]:: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = vyberte řetězec-vzorek "\w"-cesta $($classIdsFile) | Objekt ForEach {
        $_. Řádek
    }

foreach ($classId v $classIdsFromFile)
    {
        # Seznam aktuální tříd uživatele převezme další sadu tříd precendence
        # tedy pokud jsme už jste určili roli, není potřeba udělat znovu.
        Pokud (-ne $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Zkuste
            {
                $displayName = get-název třídy – ID třídy $classId
                $classRecord = generovat ClassRecord – ID $userId – ID třídy $classId-role $userrole - displayName $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            zachycení
            {
                Zápis hostitele $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Export souboru Csv – cesta.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Export souboru Csv – cesta.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (položkou get-cestu ". \"-podrobného). FullName
Zápis hostitele "Podrobnosti třída file($($outputFileName).csv) je generováno v $directoryPath\($($outputFileName).csv)"
Zápis hostitele "Třídy podrobnosti o vzniku report(UserClassDetailsReport.csv) na $directoryPath\UserClassDetailsReport.csv"

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.

×