Toewijzingen Scripts - ophalen

Opmerking:  We willen u graag zo snel mogelijk de meest recente Help-inhoud in uw eigen taal bieden. Deze pagina is automatisch vertaald en kan grammaticale fouten of onnauwkeurigheden bevatten. Wij hopen dat deze inhoud nuttig voor u is. Kunt u ons onder aan deze pagina laten weten of de informatie nuttig voor u was? Hier is het Engelstalige artikel ter referentie.

De power shell-scripts zijn voor Get - gebruikersklassen gekoppeld

< #
   . Samenvatting
    De gegevens van de gebruiker klassen krijgen zoals welke klassen de gebruiker is lid en wat is de gebruikersrol van de gebruiker in alle categorieën.
    . BESCHRIJVING
    Scripts leest u het bestand en krijgen alle de ClassID en updates de rol met de userrole genoemd, als dat niet vermeld toewijzen aan studenten die standaard is. Vervolgens haalt de klassen waarin de gebruiker is eigenaar en klassen waar de gebruiker lid is. Script verfijning en genereert de uitvoer met de details van de klasse en de rol van de gebruiker in specifieke klas.
   . Voorbeeld
    .\Get-userClasses.ps1 - gebruikers-id < specifieke gebruiker Id >
        Hiermee krijgt de gegevens van de gebruiker op basis van lidmaatschap van de gebruiker
    .\Get-userClasses.ps1 - gebruikers-id < specifieke gebruiker Id > - classIdsFile < pad voltooid CSV-bestand >
        Hiermee krijgt de gegevens van de gebruiker van klassen die zijn opgegeven in het CSV-bestand en gebruiker lidmaatschap als we de parameter userRole geen doorgeeft, deze worden toegewezen aan studenten standaard voor de opgegeven in het CSV-bestand ClassID
    .\Get-userClasses.ps1 - gebruikers-id < specifieke gebruiker Id > - classIdsFile < pad voltooid CSV-bestand > - userrole < Student of docent >
        Hiermee krijgt de gegevens van de gebruiker van klassen die zijn opgegeven in het CSV-bestand en gebruiker lidmaatschap. Voor de opgegeven in bestand ClassID gebruikersgegevens wordt gegenereerd op basis van de userrole opgegeven (docent of studenten)
   . Parameter-gebruikers-id
   Gebruikers-id van de gebruiker wilt exporteren en verwijderen van ingediende items
   . Parameter classIdsFile
   Volledige pad naar een tekstbestand met een enkele klasse-id op elke regel.
   lijst met voorbeelden van ClassID. Elke regel één klasse-id nodig hebt
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parameter userrole
   Deze parameter wordt gebruikt om op te geven van de rol van de gebruiker moet worden gebruikt voor de klasse-id's aanwezig zijn in classIdsFile en de gebruiker wordt verwijderd uit class.
   .paramter outputFileName
   Deze parameter wordt gebruikt als naam van het uitvoerbestand van het script, zonder extensie. Dit is niet mandatorty al dan niet standaard is de naam van het uitvoerbestand UserClassDetails
   . Notities
   We moet beschikken over de Microsoft.IdentityModel.Clients.ActiveDirectory.dll en Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll zijn vereist
#>
parameter (
    [Parameter (verplicht = $true, positie = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Probeer {
            [System.Guid]::Parse($_) | Uitgaande Null
            $true
        } onderschept {
            $_ genereren
        }
    })]
    [tekenreeks] $userId,

[parameter (verplicht = $false, positie = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Als (-niet ($_ | Test-Path)) {
            genereren "bestand of map bestaat niet"
        }
        Als (-niet ($_ | Test-Path - PathType knooppuntniveau)) {
            genereren 'het argument classIdsFile moet een bestand. Mappaden zijn niet toegestaan."
        }
        Als ($_ - notmatch "(\.txt)") {
            genereren 'het bestand dat is opgegeven in het argument pad moet type txt'
        }
        Ga terug $true
    })]
    [tekenreeks] $classIdsFile,

[Parameter (verplicht = $false, positie = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ('Studenten', 'Docent', ignorecase = $false)]
    [tekenreeks] $userrole = "Studenten",

[parameter (verplicht = $false, positie = 4)]
    [ValidateNotNullOrEmpty()]
    [tekenreeks] $outputFileName = "UserClassDetails"
)
# Laden ADAL
Toevoegen van tekst-pad ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

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

# Uitvoer om samen te vatten success/mislukken van API-oproepen.
$script: getClassDetailsReport = @)

Aanvraag #Makes web en de antwoordstatus logboeken
functie Roep RequestWithRetry
{
    parameter (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

voor ($i = 1; $i-bestand $script: maxRetryAttempt; $i ++)
    {
        Probeer
        {
            $tempResult = Roep-WebRequest-$url methode krijgen - Uri-kopteksten $script: authHeaders
            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Methode = "Haal"
                ResponseCode = $tempResult.StatusCode
                Klassenaam = $className
                Klasse-id = $classId
                Aanvraag-id $tempResult.Headers ["aanvraag-id"] =
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            Ga terug $tempResult
        }
        variabel
        {
            If($_. Nieuwe - Exception.Response $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["aanvraag-id"]
            }

            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Methode = "Haal"
                ResponseCode = $responseCode
                Klassenaam = $className
                Klasse-id = $classId
                Aanvraag-id = $requestId
                StatusDescription = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Als ($i - eq $script: maxRetryAttempt)
            {
                $_ genereren. Exception.Message
            }

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

#Get de authheaders
functie Get-AuthHeaders
{
    Parameter (
        [Parameter(Mandatory=$false)]
        [bool] $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = Nieuw Object System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = Nieuw Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - ArgumentList $authString
    Als ($useRefreshToken - eq $false)
    {
        $script: authenticationResult $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior) =
    }
    nog meer
    {
        $script: authenticationResult $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId) =
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Autorisatie" = $authHeader; "Inhoudstype" = "Toepassing/json"}
    Ga terug $headers
}

De naam van de groep #Get
functie Get-klassenaam
{
    parameter (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl = "{0}/v1.0/groups/{1}" -f $graphEndpoint, $classId
    $getClassDetailsResult = (Roep-RequestWithRetry-url $getClassDetailsUrl) | ConverterenVan-Json
    $className = $getclassDetailsResult.displayName
    Ga terug $className
}

#Get eigendom details van de gebruikers-id met edu endpoit en verfijnen met de aanmaakdatum te typen aan toewijzingen
functie Get-OwnershipDetails
{
    parameter (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / edu/gebruikers / {1} / ownedobjects?'$top 999 =" -f $graphEndpoint, $userId)
    $ownershipQuery = (Roep-RequestWithRetry-url $ownershipUrl) | ConverterenVan-Json
    $classes = $ownershipQuery.value | WHERE-Object {$_.creationOptions-bevat "classAssignments"} | Select-Object object-id, weergavenaam
    Ga terug $classes
}

#Get de details van het lidmaatschap van gebruikers-id met edu eindpunt en verfijnen met het maken, typ naar toewijzingen
functie Get-MembershipDetails
{
    parameter (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / edu/gebruikers / {1} / memberof?'$top 999 =" -f $graphEndpoint, $userId)
    $membershipQuery = (Roep-RequestWithRetry-url $membershipUrl) | ConverterenVan-Json
    $classes = $membershipQuery.value | WHERE-Object {$_.creationOptions-bevat "classAssignments"} | Select-Object object-id, weergavenaam
    Ga terug $classes
}

#Return aangepaste pscutom object waarvoor u eigenschappen klasse-id, gebruikers-id, klassenaam, rol, getsubmissionprocessed en deletesubmissionprocessed
functie genereren-ClassRecord
{
    parameter (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        Klasse-id = $classId
        Gebruikers-id $userId =
        Klassenaam = $displayName
        Rol = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

Ga terug $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Dit bestaat uit de details voor alle 'interessant' klassen
$script: classDetails = @ {}

# Zoeken eigendom klassen (waar de gebruiker is momenteel een docent)
Probeer
{
    $ownedClasses = get-OwnershipDetails - gebruikers-id $userId
    foreach ($class in $ownedClasses)
    {
        Als (-niet $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = genereren-ClassRecord - gebruikers-id $userId - klasse-id $class.objectId-rol "Docent" - weergavenaam $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
variabel
{
    Schrijven-fout $_. Exception.Message
}

# Zoeken die zijn gekoppeld groepen (waar de gebruiker is momenteel een leerling/student)
Probeer
{
    $joinedClasses = get-MembershipDetails - gebruikers-id $userId
    foreach ($class in $joinedClasses)
    {
        Als (-niet $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = genereren-ClassRecord - gebruikers-id $userId - klasse-id $class.objectId-rol "Studenten" - weergavenaam $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
variabel
{
    Schrijven-fout $_. Exception.Message
}

# Meer informatie over de extra groepen uit het bestand.
If(![ tekenreeks]:: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = Selecteer-tekenreeks-patroon "\w"-pad $($classIdsFile) | ForEach-Object {
        $_. Lijn
    }

foreach ($classId in $classIdsFromFile)
    {
        # Lijst met de huidige klassen van de gebruiker heeft precendence boven de extra verzameling klassen
        # dat wil zeggen als we de rol al hebt geïdentificeerd, niet moeten we dit nogmaals te doen.
        Als (-niet $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Probeer
            {
                $displayName = get-klassenaam - klasse-id $classId
                $classRecord = genereren-ClassRecord - gebruikers-id $userId - klasse-id $classId-rol $userrole - weergavenaam $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            variabel
            {
                Write-Host $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Export-Csv-pad.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Export-Csv-pad.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (get-Item-pad '. \ "-uitgebreide). Volledige naam
Write-Host "Class details file($($outputFileName).csv) wordt gegenereerd tijdens $directoryPath\($($outputFileName).csv)"
Write-Host "Class details report(UserClassDetailsReport.csv) wordt gegenereerd tijdens $directoryPath\UserClassDetailsReport.csv"

Uw Office-vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×