Obtenir des Scripts affectations-

Remarque :  Nous faisons de notre mieux pour vous fournir le contenu d’aide le plus récent aussi rapidement que possible dans votre langue. Cette page a été traduite automatiquement et peut donc contenir des erreurs grammaticales ou des imprécisions. Notre objectif est de faire en sorte que ce contenu vous soit utile. Pouvez-vous nous indiquer en bas de page si ces informations vous ont aidé ? Voici l’article en anglais à des fins de référence aisée.

Joint sont les scripts shell power pour Get - classes d’utilisateurs

< #
   . Résumé
    Obtenir les informations de classes utilisateur telles que les classes l’utilisateur est membre et quel est le rôle d’utilisateur de l’utilisateur dans ces cours.
    . DESCRIPTION
    Scripts lit le fichier et obtenir les identificateurs de classe et mises à jour le rôle dont l’userrole mentionnées, si ce n’est pas mentionnées affecter à étudiant par défaut. Il obtient ensuite les classes dans lequel l’utilisateur est propriétaire et l’endroit où l’utilisateur est membre. Script raffine et génère le résultat avec les détails de classe et le rôle d’utilisateur de classe spécifique.
   . Exemple
    .\Get-userClasses.ps1 - ID utilisateur < Id utilisateur >
        Cela obtiendrez détails de l’utilisateur en fonction de l’appartenance utilisateur
    .\Get-userClasses.ps1 - nom d’utilisateur < Id utilisateur > - classIdsFile < chemin de fichier csv complète >
        Cela obtenez les détails de l’utilisateur de classes spécifiées dans l’appartenance de fichier et utilisateur csv, si nous ne passez le paramètre userRole, lui est affecté par défaut étudiant pour les identificateurs de classe spécifié dans un fichier csv
    .\Get-userClasses.ps1 - nom d’utilisateur < Id utilisateur > - classIdsFile < chemin de fichier csv complète > - userrole < étudiant ou enseignant >
        Cela obtenez les détails de l’utilisateur de classes spécifiées dans l’appartenance aux fichiers et des utilisateurs csv. Pour les identificateurs de classe spécifié dans le fichier de données utilisateur sont générées selon userrole spécifié (enseignant ou étudiant)
   . ID d’utilisateur paramètre
   ID d’utilisateur de l’utilisateur pour exporter et supprimer des envois
   . Paramètre classIdsFile
   Chemin d’accès complet à un fichier au format texte brut qui contient un identificateur de classe unique sur chaque ligne.
   exemple de liste d’identificateurs de classe. Chaque ligne doit être unique identificateur de classe
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Paramètre userrole
   Ce paramètre est utilisé pour spécifier le rôle de l’utilisateur à utiliser pour les ID de classe présents dans classIdsFile et l’utilisateur est supprimé de cours.
   outputFileName .paramter
   Ce paramètre est utilisé pour nommer le fichier de sortie du script, sans extensions. Ce n’est pas mandatorty par défaut le nom de fichier de sortie est UserClassDetails
   . Notes
   Nous devons disposer les Microsoft.IdentityModel.Clients.ActiveDirectory.dll et Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll sont requis
#>
paramètre (
    [Paramètre (obligatoire = $true, Position = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Essayez {
            [System.Guid]::Parse($_) | Out-Null
            $true
        } intercepter {
            lever $_
        }
    })]
    [chaîne] $userId,

[paramètre (obligatoire = $false, Position = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Si (-pas ($_ | Test-Path)) {
            lever « fichier ou dossier n’existe pas »
        }
        Si (-pas ($_ | Test-Path - PathType feuille)) {
            lever « l’argument classIdsFile doit être un fichier. Chemins d’accès de dossier ne sont pas autorisées. »
        }
        Si ($_ - notmatch « (\.txt) ») {
            lever « le fichier spécifié dans l’argument path doit être de type txt »
        }
        retour $true
    })]
    [chaîne] $classIdsFile,

[Paramètre (obligatoire = $false, Position = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet (« Étudiant », « Enseignant », ignorecase = $false)]
    [chaîne] $userrole = « Étudiant »,

[paramètre (obligatoire = $false, Position = 4)]
    [ValidateNotNullOrEmpty()]
    [chaîne] $outputFileName = « UserClassDetails »
)
N° charger terme ADAL
Ajouter un Type-chemin d’accès «.\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll »

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

N° de sortie à synthétiser succès/échec d’appels d’API.
$script : getClassDetailsReport = @()

Requête web #Makes et enregistre l’état de réponse
fonction appeler RequestWithRetry
{
    paramètre (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

pour ($i = 1 ; $i-le $script : maxRetryAttempt ; $i ++)
    {
        Essayez
        {
            $tempResult = appeler WebRequest-méthode Get - Uri $url-en-têtes $script : authHeaders
            $script : getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Méthode = « Get »
                ResponseCode = $tempResult.StatusCode
                NomClasse = $className
                ID de classe = $classId
                ID de demande = $tempResult.Headers [« demande-id »]
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            retourner $tempResult
        }
        intercepter
        {
            if($_. Exception.Response - garanties $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers [« demande-id »]
            }

            $script : getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Méthode = « Get »
                ResponseCode = $responseCode
                NomClasse = $className
                ID de classe = $classId
                ID de demande = $requestId
                StatusDescription = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Si ($i - eq $script : maxRetryAttempt)
            {
                lever $_. Exception.Message
            }

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

#Get l’authheaders
fonction Get-AuthHeaders
{
    Paramètre (
        [Parameter(Mandatory=$false)]
        [bool] $useRefreshToken = $false
    )
    $clientId = « eb2298a1-a6bb-4f16-a27a-b582815db47b »
    $redirectURI = New-Object System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = New-Object « Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext » - ArgumentList $authString
    Si ($useRefreshToken - eq $false)
    {
        $script : authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    Dois-je
    {
        $script : authenticationResult = $authContext.AcquireTokenByRefreshToken (script:authenticationResult.RefreshToken$, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{« Autorisation » = $authHeader ; « Type de contenu » = « Application/json »}
    retourner $headers
}

Le nom du groupe #Get
fonction Get-NomClasse
{
    paramètre (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl = « {0}/v1.0/groups/{1} » -f $graphEndpoint, $classId
    $getClassDetailsResult = (appeler RequestWithRetry-url $getClassDetailsUrl) | ConvertFrom Json
    $className = $getclassDetailsResult.displayName
    retour $className
}

Détails de la propriété #Get d’id d’utilisateur à l’aide de l’éducation endpoit et affiner avec la création de type aux affectations de
fonction Get-OwnershipDetails
{
    paramètre (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = (« {0} / l’éducation/utilisateurs / {1} / ownedobjects?'$top = 999 » -f $graphEndpoint, $userId)
    $ownershipQuery = (appeler RequestWithRetry-url $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | WHERE objet {$_.creationOptions-contient « classAssignments »} | Sélectionnez objet objectId, displayName
    retourner $classes
}

#Get les détails de l’appartenance d’id d’utilisateur à l’aide de l’éducation point de terminaison et affiner avec la création de type aux affectations de
fonction Get-MembershipDetails
{
    paramètre (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = (« {0} / l’éducation/utilisateurs / {1} / memberof?'$top = 999 » -f $graphEndpoint, $userId)
    $membershipQuery = (appeler RequestWithRetry-url $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | WHERE objet {$_.creationOptions-contient « classAssignments »} | Sélectionnez objet objectId, displayName
    retourner $classes
}

#Return pscutom personnalisé objet qui ont des propriétés d’ID de classe, nom d’utilisateur, NomClasse, rôle, getsubmissionprocessed et deletesubmissionprocessed
fonction Generate ClassRecord
{
    paramètre (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        ID de classe = $classId
        Nom d’utilisateur = $userId
        NomClasse = $displayName
        Rôle = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

retourner $classRecord
}

$script : authHeaders = Get-AuthHeaders

# Ceci contient les détails pour toutes les catégories « intéressantes »
$script : classDetails = @ {}

# Rechercher appartenant classes (où utilisateur est actuellement un enseignant)
Essayez
{
    $ownedClasses = get-OwnershipDetails - ID utilisateur $userId
    foreach ($class dans $ownedClasses)
    {
        Si (-pas $script : classDetails.ContainsKey($class.objectId))
        {
            $classRecord = générer ClassRecord - ID utilisateur $userId - identificateur de classe $class.objectId-rôle « Enseignant » displayName - $class.displayName
            $script:classDetails.Add (class.objectId$, $classRecord)
        }
    }
}
intercepter
{
    Erreur d’écriture $_. Exception.Message
}

# Rechercher rejoint groupes (où utilisateur est actuellement un étudiant)
Essayez
{
    $joinedClasses = get-MembershipDetails - ID utilisateur $userId
    foreach ($class dans $joinedClasses)
    {
        Si (-pas $script : classDetails.ContainsKey($class.objectId))
        {
            $classRecord = générer ClassRecord - ID utilisateur $userId - identificateur de classe $class.objectId-rôle « Étudiant » displayName - $class.displayName
            $script:classDetails.Add (class.objectId$, $classRecord)
        }
    }
}
intercepter
{
    Erreur d’écriture $_. Exception.Message
}

N° des informations supplémentaires pour les groupes supplémentaires à partir du fichier.
if(![ chaîne] :: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = select-String-motif « \w »-chemin d’accès $($classIdsFile) | ForEach-Object {
        $_. Ligne
    }

foreach ($classId dans $classIdsFromFile)
    {
        # Liste de classes actuel de l’utilisateur a precendence sur le jeu de classes
        # c'est-à-dire si nous avons déjà identifié le rôle, nous n’avez pas besoin de le faire à nouveau.
        Si (-pas $script : classDetails.ContainsKey($classId.Trim("")))
        {
            Essayez
            {
                $displayName = get-NomClasse - identificateur de classe $classId
                $classRecord = générer ClassRecord - ID utilisateur $userId - ID de la classe $classId-rôle $userrole - displayName $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            intercepter
            {
                Écriture hôte $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Exporter Csv-chemin d’accès.\$($outputFileName).csv - NoTypeInformation
$script : getClassDetailsReport | Exporter Csv-chemin d’accès.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (élément de get-chemin d’accès «. \ »-détaillée). Nom complet
Écriture-hôte « Détails de classe file($($outputFileName).csv) est généré au $directoryPath\($($outputFileName).csv) »
Écriture-hôte « Détails de classe report(UserClassDetailsReport.csv) est généré au $directoryPath\UserClassDetailsReport.csv »

Développez vos compétences dans Office
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×