Tildelinger skript - få

Obs!:  Vi ønsker å gi deg det nyeste hjelpeinnholdet så raskt som mulig, på ditt eget språk. Denne siden er oversatt gjennom automatisering og kan inneholde grammatiske feil eller unøyaktigheter. Formålet vårt er at innholdet skal være nyttig for deg. Kan du fortelle oss om informasjonen var nyttig for deg nederst på denne siden? Her er den engelske artikkelen for enkel referanse.

Vedlagt er skallskript power for Get - brukeren klasser

< #
   . Sammendrag
    Få brukerinformasjon klasser under som i hvilken klasser brukeren er medlem og hva er brukerrolle for brukeren i disse klasser.
    . Beskrivelse
    Skript som leser filen, og få alle ClassIDene og oppdateringer rollen med userrole nevnt, hvis den ikke er nevnt tilordne til student som er standard. Deretter får den klasser der brukeren er eier og klasser der brukeren er medlem. Skriptet redigerer og genererer utdata med informasjon om klassen og rollen til brukeren i bestemte klassen.
   . Eksempel
    .\Get-userClasses.ps1 - bruker < bestemte bruker-IDen >-ID
        Dette får Brukerdetaljer i henhold til brukeren medlemskap
    .\Get-userClasses.ps1 - bruker-ID < bestemte bruker-IDen > - classIdsFile < fullført csv filbanen >
        Dette får Brukerdetaljer med klasser som er angitt i csv-fil og bruker medlemskap Hvis vi ikke sende parameteren userRole, tilordnes til Student standard for ClassIDene angitt i csv-fil
    .\Get-userClasses.ps1 - bruker-ID < bestemte bruker-IDen > - classIdsFile < fullført csv filbanen > - userrole < Student eller lærer >
        Dette får Brukerdetaljer med klasser som er angitt i csv-fil og bruker medlemskap. For ClassIDene angitt i filen genereres brukerdata i henhold til userrole angitt (læreren eller Student)
   . Bruker-ID for parameteren
   Bruker-IDen for brukeren å eksportere og slette innsendinger
   . Parameteren classIdsFile
   Hele banen til en ren tekstfil som inneholder en enkelt klasse på hver linje.
   liste over ClassIDene. Alle linjene skal ha enkel klasse
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parameter userrole
   Denne parmeter brukes til å angi rollen til brukeren som skal brukes for klasse-IDer finnes i classIdsFile og brukeren er fjernet fra klasse.
   .paramter utdatafilnavn
   Denne parameteren brukes til å gi navn til utdatafilen av skriptet, uten filtype. Dette er ikke mandatorty som standard er navnet på utdatafilen UserClassDetails
   . Notater
   Vi må ha Microsoft.IdentityModel.Clients.ActiveDirectory.dll og Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll kreves
#>
parameteren (
    [Parameter (obligatorisk = $true, plassering = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Prøv {
            [System.Guid]::Parse($_) | Gamle Null
            $true
        } fange opp {
            Gi $_
        }
    })]
    [streng] $userId,

[parameter (obligatorisk = $false, plassering = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Hvis (-ikke ($_ | Test-Path)) {
            Gi "filen eller mappen finnes ikke"
        }
        Hvis (-ikke ($_ | Test-Path - PathType blader)) {
            Gi "argumentet classIdsFile må være en fil. Mappebaner er ikke tillatt."
        }
        Hvis ($_ - notmatch "(\.txt)") {
            Gi "filen som er angitt i argumentet banen må være av typen txt"
        }
        returnere $true
    })]
    [streng] $classIdsFile,

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

[parameter (obligatorisk = $false, plassering = 4)]
    [ValidateNotNullOrEmpty()]
    [streng] $outputFileName = "UserClassDetails"
)
# Laste ADAL
Legg til Type-bane ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

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

# Utdata til å summere suksess/feil på API-kall.
$script: getClassDetailsReport = @)

Forespørsel om #Makes web og logger svarstatus
funksjonen starte 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 = starte WebRequest-metoden få - Uri $url-topptekster $script: authHeaders
            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Metode = "Hent"
                ResponseCode = $tempResult.StatusCode
                Klassenavn = $className
                Klasse-ID = $classId
                RequestId = $tempResult.Headers ["forespørsel-id"]
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            returnere $tempResult
        }
        fange opp
        {
            IF($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["forespørsel-id"]
            }

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

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

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

#Get authheaders
funksjonen Get-AuthHeaders
{
    Parameteren (
        [Parameter(Mandatory=$false)]
        Boolsk verdi $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = ny objektet 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)
    }
    annet
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Autorisasjon" = $authHeader; "Innholdstype" = "Programmet/json"}
    returnere $headers
}

#Get gruppen navn på
funksjonen Get-Klassenavn
{
    parameteren (
        [Parameter(Mandatory=$true)] $classId
    )

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

#Get eierskap detaljene for bruker-id ved hjelp av edu endpoit og Forny med opprettelsen skrive til tildelinger
funksjonen Get-OwnershipDetails
{
    parameteren (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / edu/brukere / {1} / ownedobjects?'$top = 999" -f $graphEndpoint, $userId)
    $ownershipQuery = (starte RequestWithRetry-URL-adressen $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | Hvor objektet {$_.creationOptions-inneholder "classAssignments"} | Velg objektet objekt-ID, visningsnavn
    returnere $classes
}

#Get medlemskap detaljene for bruker-id ved hjelp av edu endepunkt og Forny med opprettelsen skrive til tildelinger
funksjonen Get-MembershipDetails
{
    parameteren (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / edu/brukere / {1} / memberof?'$top = 999" -f $graphEndpoint, $userId)
    $membershipQuery = (starte RequestWithRetry-URL-adressen $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | Hvor objektet {$_.creationOptions-inneholder "classAssignments"} | Velg objektet objekt-ID, visningsnavn
    returnere $classes
}

#Return egendefinerte pscutom objekt som har egenskaper for klasse-ID, bruker-ID, Klassenavn, rolle, getsubmissionprocessed og deletesubmissionprocessed
funksjonen Generer ClassRecord
{
    parameteren (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

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

returnere $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Dette vil inneholde detaljer for alle klassene "interessant"
$script: classDetails = @ {}

# Finne eies klasser (der brukeren er for øyeblikket en lærer)
Prøv
{
    $ownedClasses = get-OwnershipDetails - bruker $userId-ID
    foreach ($class i $ownedClasses)
    {
        Hvis (-ikke $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generer ClassRecord - bruker-ID $userId - klasse $class.objectId-rollen "Lærer" - visningsnavn $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
fange opp
{
    Feil under skriving $_. Exception.Message
}

# Finne sammenføyd grupper (der brukeren er for øyeblikket en student)
Prøv
{
    $joinedClasses = get-MembershipDetails - bruker $userId-ID
    foreach ($class i $joinedClasses)
    {
        Hvis (-ikke $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generer ClassRecord - bruker-ID $userId - klasse $class.objectId-rollen "Student" - visningsnavn $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
fange opp
{
    Feil under skriving $_. Exception.Message
}

# Finne mer informasjon om resten av gruppene fra filen.
IF(![ streng]:: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = Velg streng-mønster "\w"-bane $($classIdsFile) | ForEach objekt {
        $_. Linje
    }

foreach ($classId i $classIdsFromFile)
    {
        # Av brukerens gjeldende klasser tar precendence over flere sett med klasser
        # Det vil si hvis du allerede har vi identifisert rollen vi trenger ikke å gjøre det på nytt.
        Hvis (-ikke $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Prøv
            {
                $displayName = get-Klassenavn - klasse $classId
                $classRecord = Generer ClassRecord - bruker-ID $userId - klasse $classId-rolle $userrole - visningsnavn $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            fange opp
            {
                Skriv Host $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Eksporter Csv-bane.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Eksporter Csv-bane.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (get-element-bane». \ "-detaljert). FullName
Skriv-vert "Klassen detaljer file($($outputFileName).csv) genereres under $directoryPath\($($outputFileName).csv)"
Skriv-vert «Klassen detaljer report(UserClassDetailsReport.csv) genereres under $directoryPath\UserClassDetailsReport.csv»

Bli bedre på Office
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×