Tildelinger Scripts – Hent

Bemærk!:  Vi vil gerne give dig den mest opdaterede hjælp, så hurtigt vi kan, på dit eget sprog. Denne side er oversat ved hjælp af automatisering og kan indeholde grammatiske fejl og unøjagtigheder. Det er vores hensigt, at dette indhold skal være nyttigt for dig. Vil du fortælle os, om oplysningerne var nyttige for dig, nederst på denne side? Her er artiklen på engelsk så du kan sammenligne.

Vedhæftet er power shellscripts til Get - bruger klasser

< #
   . Forestilling
    Få klasser brugeroplysninger, som i hvilke klasser brugeren er medlem, og hvad er brugerrollen af brugeren i disse klasser.
    . Beskrivelse
    Scripts, som læser filen og få alle klasse-id'er og opdateringer rollen med userrole nævnt, hvis det ikke nævnt Tildel til studerende, som er standard. Vælg derefter det får de klasser, hvor brugeren er ejer og klasser hvor brugeren er medlem. Script er blevet forbedret og genererer output med klasse detaljer og af brugers rolle i bestemte klasse.
   . Eksempel på
    .\Get-userClasses.ps1 - bruger-id < bestemte bruger-id'et >
        Dette får brugeroplysninger ifølge bruger medlemskab
    .\Get-userClasses.ps1 - bruger-id < bestemte bruger-id'et > - classIdsFile < fuldført csv-filsti >
        Dette får brugeren detaljerne for klasser, der er angivet i CSV-fil og bruger medlemskab, hvis vi ikke går igennem parameteren userRole, tildeles den til studerende standard for klasse-id'er angivet i CSV-fil
    .\Get-userClasses.ps1 - bruger-id < bestemte bruger-id'et > - classIdsFile < fuldført csv-filsti > - userrole < studerende eller lærer >
        Dette får brugeren detaljerne for klasser, der er angivet i CSV-fil og bruger medlemskab. For klasse-id'er angivet i filen brugerdata genereres ud fra den angivne userrole (lærer eller elev)
   . Parameter bruger-id
   Bruger-id for brugeren, du kan eksportere og slette anmodninger
   . Parameter classIdsFile
   Hele stien til en almindelig tekstfil som indeholder en enkelt klasse på hver linje.
   liste over klasse-id'er. Hver linje skal have enkelt klasse
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parameter userrole
   Denne parmeter bruges til at angive rolle brugeren skal bruges til klasse-id'er i classIdsFile og brugeren er fjernet fra klasse.
   .paramter outputFileName
   Denne parameter bruges til at navngive outputfilen af script, uden filtypenavn. Dette er ikke mandatorty som standard er navnet på outputfilen UserClassDetails
   . Noter
   Vi vil have Microsoft.IdentityModel.Clients.ActiveDirectory.dll og Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll der kræves
#>
Parameteren (
    [Parameter (obligatorisk = $true, Position = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Prøv {
            [System.Guid]::Parse($_) | Tilknytte Null
            $true
        } fange {
            Udløs $_
        }
    })]
    [streng] $userId,

[parameter (obligatorisk = $false, Position = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Hvis (-ikke ($_ | Test-Path)) {
            Udløs "fil eller mappe findes ikke"
        }
        Hvis (-ikke ($_ | Test-Path - PathType blad)) {
            Udløs "argumentet classIdsFile skal være en fil. Stier til mapper er ikke tilladt."
        }
        Hvis ($_ - notmatch "(\.txt)") {
            Udløs "filen angivet i argumentet stien skal være af typen txt"
        }
        returnere $true
    })]
    [streng] $classIdsFile,

[Parameter (obligatorisk = $false, Position = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ('Student', 'Lærer' ignorecase = $false)]
    [streng] $userrole = "Studerende"

[parameter (obligatorisk = $false, Position = 4)]
    [ValidateNotNullOrEmpty()]
    [streng] $outputFileName = "UserClassDetails"
)
# Indlæse ADAL
Tilføj Type-sti ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

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

# Output til at opsummere succes/fejl i forbindelse med API-kald.
$script: getClassDetailsReport = @)

#Makes webforespørgsel og logfører svarstatus
funktionen Aktiver RequestWithRetry
{
    Parameteren (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

for ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        Prøv
        {
            $tempResult = Aktiver WebRequest-metode få - Uri $url-sidehoveder $script: authHeaders
            $script: getClassDetailsReport += (lighedstegn) [PSCustomObject] @{
                RequestUrl = $url
                Metode = "Hent"
                ResponseCode = $tempResult.StatusCode
                Klassenavn = $className
                Klasse = $classId
                RequestId = $tempResult.Headers ["anmodning-id"]
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            returnere $tempResult
        }
        fange
        {
            IF($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["anmodning-id"]
            }

            $script: getClassDetailsReport += (lighedstegn) [PSCustomObject] @{
                RequestUrl = $url
                Metode = "Hent"
                ResponseCode = $responseCode
                Klassenavn = $className
                Klasse = $classId
                RequestId = $requestId
                StatusDescription = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Hvis ($i - eq $script: maxRetryAttempt)
            {
                Udløs $_. Exception.Message
            }

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

#Get på authheaders
funktionen Get-AuthHeaders
{
    Parameteren (
        [Parameter(Mandatory=$false)]
        Boolesk $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = ny objekt System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = ny objekt "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - ArgumentList $authString
    Hvis ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    anden
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Godkendelse" = $authHeader; "Indholdstype" = "Programmet/json"}
    returnere $headers
}

#Get gruppen navn
funktionen Get klassenavn
{
    Parameteren (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl = "{0}/v1.0/groups/{1}" -f $graphEndpoint, $classId
    $getClassDetailsResult = (Aktiver RequestWithRetry-URL-adressen $getClassDetailsUrl) | ConvertFrom Json
    $className = $getclassDetailsResult.displayName
    returnere $className
}

#Get ejerskab oplysninger om bruger-id ved hjælp af edu endpoit og afgræns med oprettelsen skrive tildelinger
funktionen Get-OwnershipDetails
{
    Parameteren (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / edu/brugere / {1} / ownedobjects?'$top = 999" -f $graphEndpoint, $userId)
    $ownershipQuery = (Aktiver RequestWithRetry-URL-adressen $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | Hvor objekt {$_.creationOptions-indeholder "classAssignments"} | Vælg objekt objectId, vist navn
    returnere $classes
}

#Get medlemskab oplysninger om bruger-id ved hjælp af edu slutpunkt og afgræns med oprettelsen skrive tildelinger
funktionen Get-MembershipDetails
{
    Parameteren (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / edu/brugere / {1} / memberof?'$top = 999" -f $graphEndpoint, $userId)
    $membershipQuery = (Aktiver RequestWithRetry-URL-adressen $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | Hvor objekt {$_.creationOptions-indeholder "classAssignments"} | Vælg objekt objectId, vist navn
    returnere $classes
}

#Return brugerdefinerede pscutom objekt, der har egenskaberne klasse, bruger-id, klassenavn, rolle, getsubmissionprocessed og deletesubmissionprocessed
funktionen Generer ClassRecord
{
    Parameteren (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        Klasse = $classId
        Bruger-id = $userId
        Klassenavn = $displayName
        Rolle = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

returnere $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Dette skal indeholde oplysninger for alle "interessant" klasser
$script: classDetails = @ {}

# Find ejes klasser (hvor bruger er i øjeblikket en lærer)
Prøv
{
    $ownedClasses = get-OwnershipDetails - bruger-id $userId
    foreach ($class i $ownedClasses)
    {
        Hvis (-ikke $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generer ClassRecord - bruger-id $userId - klasse $class.objectId-rolle "Lærer" - vist navn $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
fange
{
    Fejl ved skrivning $_. Exception.Message
}

# Find tilmeldt grupper (hvor bruger er i øjeblikket en studerende)
Prøv
{
    $joinedClasses = get-MembershipDetails - bruger-id $userId
    foreach ($class i $joinedClasses)
    {
        Hvis (-ikke $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generer ClassRecord - bruger-id $userId - klasse $class.objectId-rolle "Studerende" - vist navn $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
fange
{
    Fejl ved skrivning $_. Exception.Message
}

# Finde oplysninger om de ekstra grupper fra filen.
IF(![ streng]:: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = Vælg streng-mønster "\w"-sti $($classIdsFile) | ForEach objekt {
        $_. Linje
    }

foreach ($classId i $classIdsFromFile)
    {
        # Liste over brugerens aktuelle klasser tager precendence over flere sæt af klasser
        # dvs., hvis vi har allerede identificeret rollen, vi ikke behøver at gøre det igen.
        Hvis (-ikke $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Prøv
            {
                $displayName = get klassenavn - klasse $classId
                $classRecord = Generer ClassRecord - bruger-id $userId - klasse $classId-rolle $userrole - vist navn $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            fange
            {
                Skriv Host $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Eksportér-Csv-sti.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Eksportér-Csv-sti.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (get-element-sti ". \"-detaljeret). Fuldt navn
Skriv-Host "Klasse detaljer file($($outputFileName).csv) oprettes på $directoryPath\($($outputFileName).csv)"
Skriv-Host "Klasse detaljer report(UserClassDetailsReport.csv) oprettes på $directoryPath\UserClassDetailsReport.csv"

Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×