Partager via


Créer un package d’accès dans la gestion des droits d’utilisation pour une application avec un rôle unique à l’aide de PowerShell

Dans la gestion des droits d’utilisation Microsoft Entra, un package d’accès englobe les stratégies spécifiant comment les utilisateurs peuvent se voir attribuer un ou plusieurs rôles de ressources. Les ressources peuvent inclure des groupes, des applications et des sites SharePoint Online.

Cet article explique comment créer un package d’accès pour une application unique avec un rôle unique, à l’aide de Microsoft Graph PowerShell. Ce scénario s’applique principalement aux environnements qui utilisent la gestion des droits d’utilisation pour automatiser l’accès continu pour une application métier ou intergiciel spécifique. Une organisation disposant de plusieurs ressources ou de ressources avec plusieurs rôles peut également modéliser ses stratégies d’accès avec des packages d’accès :

Prérequis

L’utilisation de cette fonctionnalité nécessite des licences Gouvernance Microsoft Entra ID ou Suite Microsoft Entra. Pour trouver la licence adaptée à vos besoins, consultez Notions de base sur les licences Gouvernances des ID Microsoft Entra.

Avant de commencer à créer le package d’accès, vous devez intégrer l’application à Microsoft Entra ID. Si votre application n’est pas encore présente dans votre locataire Microsoft Entra ID, suivez les instructions de cet article pour créer une application et un principal de service pour l’objet. Vérifiez également que votre locataire Microsoft Entra ID satisfait les prérequis avant de configurer Microsoft Entra ID pour la gouvernance des identités.

Pour créer le package d’accès et ses stratégies et affectations associées, vous devez disposer des informations suivantes :

Cas d’usage Paramètre de configuration Variable PowerShell
Tous Nom de l’application dans votre locataire Microsoft Entra ID $servicePrincipalName
Tous Nom du rôle de l’application $servicePrincipalRoleName
Tous Nom du catalogue contenant le package d’accès $catalogName
Tous Nom à donner au package d’accès $accessPackageName
Tous Description à donner au package d’accès $accessPackageDescription
Séparation des tâches requise avec un package d’accès incompatible ID du package d’accès incompatible $incompatibleAccessPackageId (si nécessaire)
Utilisateurs qui n’ont pas encore d’affectation et qui ne seraient pas automatiquement affectés Liste d’utilisateurs $inputpath (si nécessaire)
Les utilisateurs ayant des attributs spécifiques ont automatiquement des affectations Expression de requête pour les utilisateurs dans l’étendue $autoAssignmentPolicyFilter (si nécessaire)
Autoriser les utilisateurs qui n’ont pas d’affectation à demander une affectation Étendue des utilisateurs qui peuvent demander, approbateurs, et période de révision d’accès Dépend des exigences
Automatiser la création ou la suppression d’affectations selon que l’utilisateur rejoint ou quitte un workflow dans les workflows de cycle de vie Noms des workflows qui accordent et retirent l’accès Dépend des exigences

S’authentifier auprès de Microsoft Entra ID

Cette section montre comment interagir avec Gouvernance Microsoft Entra ID à l’aide de cmdlets Microsoft Graph PowerShell.

La première fois que votre organisation utilise ces cmdlets pour ce scénario, vous devez avoir un rôle d’administrateur général pour autoriser l’utilisation de Microsoft Graph PowerShell dans votre locataire. Les interactions suivantes peuvent utiliser un rôle avec des privilèges inférieurs, par exemple :

  1. Ouvrez PowerShell.

  2. Si les modules Microsoft Graph PowerShell ne sont pas déjà installés, installez le module Microsoft.Graph.Identity.Governance et les autres à l’aide de cette commande :

    Install-Module Microsoft.Graph
    

    Si les modules sont déjà installés, vérifiez que vous utilisez une version récente :

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Connectez-vous à Microsoft Entra ID :

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Si c’est la première fois que vous utilisez cette commande, vous devrez peut-être consentir à ce que les outils en ligne de commande Microsoft Graph disposent de ces autorisations.

Créer un catalogue dans la gestion des droits d’utilisation Microsoft Entra

Par défaut, lorsqu’un administrateur interagit pour la première fois avec la gestion des droits d’utilisation, un catalogue par défaut est créé automatiquement. Toutefois, les packages d’accès pour les applications régies doivent se trouver dans un catalogue désigné.

  1. Spécifiez le nom du catalogue.

    $catalogName = "Business applications"
    
  2. Si vous disposez déjà d’un catalogue pour votre scénario de gouvernance d’application, passez à l’étape 4 de cette section.

  3. Si vous n’avez pas encore de catalogue pour votre scénario de gouvernance des applications, créez un catalogue.

    $catalog = New-MgEntitlementManagementCatalog -DisplayName $catalogName
    
  4. Recherchez l’ID du catalogue.

    $catalogFilter = "displayName eq '" + $catalogName + "'"
    $catalog = Get-MgEntitlementManagementCatalog -Filter $catalogFilter -All -expandProperty resources,accessPackages
    if ($catalog -eq $null) { throw "catalog $catalogName not found" }
    $catalogId = $catalog.Id
    

Ajouter l’application en tant que ressource au catalogue

Une fois le catalogue créé, ajoutez l’application en tant que ressource dans ce catalogue.

  1. Spécifiez le nom de l’application et le nom du rôle d’application. Utilisez le nom de votre application comme valeur de servicePrincipalName.

    $servicePrincipalName = "SAP Cloud Identity Services"
    $servicePrincipalRoleName = "User"
    
  2. Recherchez l’ID du principal de service de l’application.

    $servicePrincipalFilter = "displayName eq '" + $applicationName + "'"
    $servicePrincipal = Get-MgServicePrincipal -Filter $servicePrincipalFilter -all
    if ($servicePrincipal -eq $null) { throw "service principal $servicePrincipalName not found" }
    $servicePrincipalId = $servicePrincipal.Id
    
  3. Vérifiez si l’application est déjà présente dans le catalogue en tant que ressource. Si elle est déjà présente, passez à l’étape 6 de cette section.

    $resourceId = $null
    foreach ($r in $catalog.Resources) { if ($r.OriginId -eq $servicePrincipalId) { $resourceId = $r.id; break } }
    if ($resourceId -ne $null) { write-output "resource already in catalog" } else {write-output "resource not yet in catalog"}
    
  4. Ajoutez le principal de service de l’application en tant que ressource au catalogue.

    $resourceAddParams = @{
      requestType = "adminAdd"
      resource = @{
        originId = $servicePrincipalId
        originSystem = "AadApplication"
      }
      catalog = @{ id = $catalogId }
    }
    
    $resourceAdd = New-MgEntitlementManagementResourceRequest -BodyParameter $resourceAddParams
    if ($resourceAdd -eq $null) { throw "resource could not be added" }
    sleep 5
    
  5. Récupérez l’ID et l’étendue de la ressource dans ce catalogue.

    $resource = $null
    $resourceId = $null
    $resourceScope = $null
    $catalogResources = Get-MgEntitlementManagementCatalogResource -AccessPackageCatalogId $CatalogId -ExpandProperty "scopes" -all
    
    foreach ($r in $catalogResources) { if ($r.OriginId -eq $servicePrincipalId) { $resource = $r; $resourceId = $r.id; $resourceScope = $r.Scopes[0]; break } }
    if ($resourceId -eq $null) { throw "resource was not added" }
    
  6. Récupérez les rôles de l’application.

    $resourceRoleFilter = "(originSystem eq 'AadApplication' and resource/id eq '" + $resourceId + "')"
    $resourceRoles = @(get-mgentitlementmanagementcatalogresourcerole  -AccessPackageCatalogId $catalogId -Filter $resourceRoleFilter -All -ExpandProperty "resource")
    if ($resourceRoles -eq $null -or $resourceRoles.count -eq 0) { throw "no roles available" }
    
  7. Sélectionnez le rôle qui sera inclus dans le package d’accès.

    $resourceRole = $null
    foreach ($r in $resourceRoles) { if ($r.DisplayName -eq $servicePrincipalRoleName) { $resourceRole = $r; break; } }
    if ($resourceRole -eq $null) { throw "role $servicePrincipalRoleName not located" }
    

Créer le package d’accès pour l’application

Ensuite, vous allez utiliser PowerShell pour créer un package d’accès dans un catalogue qui inclut le rôle de l’application.

  1. Spécifiez le nom et la description du package d’accès.

    $accessPackageName = "SAP Cloud Identity Services"
    $accessPackageDescription = "A user of SAP Cloud Identity Services"
    $accessPackageHidden = $true
    
  2. Vérifiez que le package d’accès n’existe pas déjà.

    foreach ($a in $catalog.AccessPackages) { if ($a.DisplayName -eq $accessPackageName) { throw "access package $accessPackageName already exists" } }
    
  3. Créez le package d’accès.

    $accessPackageParams = @{
        displayName = $accessPackageName
        description = $accessPackageDescription
        isHidden = $accessPackageHidden
        catalog = @{
            id = $catalog.id
        }
    }
    $accessPackage = New-MgEntitlementManagementAccessPackage -BodyParameter $accessPackageParams
    $accessPackageId = $accessPackage.Id
    

Ajouter le rôle d’application au package d’accès

Une fois que vous avez créé un package d’accès, vous liez le rôle de la ressource dans le catalogue au package d’accès.

$rrsParams = @{
 role = @{
     id =  $resourceRole.Id
     displayName =  $resourceRole.DisplayName
     description =  $resourceRole.Description
     originSystem =  $resourceRole.OriginSystem
     originId =  $resourceRole.OriginId
     resource = @{
         id = $resource.Id
         originId = $resource.OriginId
         originSystem = $resource.OriginSystem
     }
 }
 scope = @{
     id = $resourceScope.Id
     originId = $resourceScope.OriginId
     originSystem = $resourceScope.OriginSystem
 }
}

$roleAddRes = New-MgEntitlementManagementAccessPackageResourceRoleScope -AccessPackageId $accessPackageId -BodyParameter $rrsParams

Créer des stratégies d’affectation de package d’accès pour l’affectation directe

Dans cette section, vous allez créer la première stratégie d’affectation de package d’accès dans le package d’accès, une stratégie d’affectation de package d’accès pour l’affectation directe, qui peut être utilisée pour le suivi des utilisateurs qui ont déjà accès à l’application. Dans l’exemple de stratégie créé dans cette section, seuls les administrateurs ou les gestionnaires d’affectation de package d’accès peuvent attribuer l’accès, les utilisateurs conservent indéfiniment l’accès, et il n’y a pas d’approbations ni de révisions d’accès.

  1. Créez une stratégie.

    $policy1Name = "Direct assignment policy"
    $policy1Description = "policy for administrative assignment"
    
    $policy1params = @{
     displayName = $policy1Name
     description = $policy1Description
     allowedTargetScope = "notSpecified"
     specificAllowedTargets = @(
     )
     expiration = @{
         endDateTime = $null
         duration = $null
         type = "noExpiration"
     }
     requestorSettings = @{
         enableTargetsToSelfAddAccess = $true
         enableTargetsToSelfUpdateAccess = $false
         enableTargetsToSelfRemoveAccess = $true
         allowCustomAssignmentSchedule = $true
         enableOnBehalfRequestorsToAddAccess = $false
         enableOnBehalfRequestorsToUpdateAccess = $false
         enableOnBehalfRequestorsToRemoveAccess = $false
         onBehalfRequestors = @(
         )
     }
     requestApprovalSettings = @{
         isApprovalRequiredForAdd = $false
         isApprovalRequiredForUpdate = $false
         stages = @(
         )
     }
     accessPackage = @{
         id = $accessPackageId
     }
    }
    
    $policy1Res = New-MgEntitlementManagementAssignmentPolicy -BodyParameter $policy1params
    $directAssignmentPolicyId = $policy1Res.Id
    
    

Configurer les contraintes de séparation des tâches

La gestion des droits d’utilisation Microsoft Entra peut appliquer des vérifications de séparation des tâches pour empêcher un utilisateur qui a déjà une affectation existante à un autre package d’accès désigné, ou qui est membre d’un groupe désigné, de demander un package d’accès.

Si vous n’avez pas d’exigences en matière de séparation des tâches pour cette application, passez à la section suivante.

Si vous avez des exigences de séparation des tâches, configurez les packages d’accès incompatibles ou les groupes existants pour votre package d’accès.

Pour chaque package d’accès qui doit être marqué comme incompatible avec un autre, vous pouvez utiliser PowerShell afin de configurer des packages d’accès comme incompatibles.

  1. Spécifiez l’autre package d’accès incompatible avec celui-ci. Remplacez la valeur de incompatibleAccessPackageId par l’ID d’un autre package d’accès dans la gestion des droits d’utilisation Microsoft Entra.

    $incompatibleAccessPackageId = "67cc7175-7a3d-4cb2-860f-4d9217ba96ca"
    
  2. Créez la référence incompatible sur ce package d’accès.

    $incompatible1params = @{
     "@odata.id" = "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages/" + $incompatibleAccessPackageId
    }
    New-MgEntitlementManagementAccessPackageIncompatibleAccessPackageByRef -AccessPackageId $accessPackageId -BodyParameter $incompatible1params
    
  3. Créez la référence incompatible sur l’autre package d’accès.

    $incompatible2params = @{
     "@odata.id" = "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages/" + $accessPackageId
    }
    New-MgEntitlementManagementAccessPackageIncompatibleAccessPackageByRef -AccessPackageId $incompatibleAccessPackageId -BodyParameter $incompatible2params
    
  4. Répétez l’opération pour tous les autres packages d’accès.

  5. Si votre scénario exige la capacité à substituer une vérification de séparation des tâches, vous pouvez également configurer des packages d’accès supplémentaires pour ces scénarios de substitution.

Ajoutez les affectations d’utilisateurs existants qui ont déjà accès à l’application.

Ajoutez les affectations d’utilisateurs existants, qui ont déjà accès à l’application, au package d’accès et à sa stratégie d’affectation directe. Vous pouvez affecter directement chaque utilisateur à un package d’accès.

  1. Récupérez les attributions de rôles d’application existantes.

    $existingAppRoleAssignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $servicePrincipalId -All)
    
  2. Pour éviter de créer des attributions en double, récupérez les attributions existantes dans le package d’accès.

    $existingAssignments1filter = "accessPackage/id eq '" + $accessPackageId + "' and state eq 'Delivered'"
    $existingassignments1 = @(Get-MgEntitlementManagementAssignment -Filter $existingAssignments1filter -ExpandProperty target -All -ErrorAction Stop)
    $existingusers1 = @()
    foreach ($a in $existingassignments1) { $existingusers1 += $a.Target.ObjectId}
    
  3. Créez de nouvelles affectations.

    foreach ($ar in $existingAppRoleAssignments) {
     if ($ar.principalType -ne "User") {
       write-warning "non-user assigned to application role"
     }
     $arpid = $ar.principalId
     if ($existingusers1.contains($arpId)) { continue }
    
     $params = @{
       requestType = "adminAdd"
       assignment = @{
          targetId = $arpId
          assignmentPolicyId = $directAssignmentPolicyId
          accessPackageId = $accessPackageId
       }
     }
     try {
       New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
     } catch {
       write-error "cannot create request for user $upn"
     }
    }
    

Ajoutez des affectations à tous les utilisateurs supplémentaires qui doivent avoir accès à l’application.

Ce script illustre l’utilisation des cmdlets PowerShell Microsoft Graph pour ajouter des utilisateurs supplémentaires afin qu’ils aient accès à l’application. Si vous n’avez pas d’utilisateurs qui ont besoin d’un accès et qui ne le recevraient pas automatiquement, passez à la section suivante.

Ce script part du principe que vous disposez d’un fichier CSV d’entrée contenant une colonne, UserPrincipalName, pour affecter ces utilisateurs au package d’accès via sa stratégie d’affectation directe.

  1. Spécifiez le nom du fichier d’entrée.

    $inputpath = "users.csv"
    
  2. Pour éviter de créer des attributions en double, récupérez les attributions existantes dans le package d’accès.

    $existingAssignments2filter = "accessPackage/id eq '" + $accessPackageId + "' and state eq 'Delivered'"
    $existingassignments2 = @(Get-MgEntitlementManagementAssignment -Filter $existingAssignments2filter -ExpandProperty target -All -ErrorAction Stop)
    $existingusers2 = @()
    foreach ($a in $existingassignments2) { $existingusers2 += $a.Target.ObjectId}
    
  3. Créez de nouvelles affectations.

    $users = import-csv -Path $inputpath
    foreach ($userrecord in $users) {
       $upn = $userrecord.UserPrincipalName
       if ($null -eq $upn) {throw "no UserPrincipalName" }
       $u = $null
       try {
          $u = Get-MgUser -UserId $upn
       } catch {
          write-error "no user $upn"
       }
       if ($u -eq $null) { continue }
       if ($existingusers2.contains($u.Id)) { continue }
    
       $params = @{
          requestType = "adminAdd"
          assignment = @{
             targetId = $u.Id
             assignmentPolicyId = $directAssignmentPolicyId
             accessPackageId = $accessPackageId
          }
       }
       try {
          New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
       } catch {
          write-error "cannot create request for user $upn"
       }
    }
    

Ajouter une stratégie aux packages d’accès pour l’affectation automatique

Si la stratégie de votre organisation spécifiant qui peut se voir octroyer l’accès à une application inclut une règle basée sur les attributs de l’utilisateur qui, en fonction de ces derniers, régit l’octroi et la suppression automatiques de l’accès, vous pouvez représenter cela en utilisant une stratégie d’affectation automatique. Un package d’accès peut avoir au maximum une stratégie d’affectation automatique. Si vous n’avez pas besoin d’affectation automatique, passez à la section suivante.

  1. Spécifiez l’expression de filtre d’affectation automatique pour que les utilisateurs reçoivent une affectation. Remplacez la valeur de autoAssignmentPolicyFilter par un filtre pour les utilisateurs Microsoft Entra ID qui sont dans l’étendue. La syntaxe et les attributs autorisés sont fournis dans les règles pour les groupes d’appartenance dynamique dans Microsoft Entra ID.

    $autoAssignmentPolicyFilter = '(user.city -eq "Redmond")'
    
  2. Utilisez PowerShell pour créer une stratégie d’affectation automatique dans le package d’accès.

    $policy2Name = "Automatic assignment policy"
    $policy2Description = "policy for automatic assignment"
    
    $policy2Params = @{
     DisplayName = $policy2Name
     Description = $policy2Description
     AllowedTargetScope = "specificDirectoryUsers"
     SpecificAllowedTargets = @( @{
         "@odata.type" = "#microsoft.graph.attributeRuleMembers"
         description = $policy2Description
         membershipRule = $autoAssignmentPolicyFilter
     } )
     AutomaticRequestSettings = @{
         RequestAccessForAllowedTargets = $true
     }
     AccessPackage = @{
       Id = $accessPackageId
     }
    }
    New-MgEntitlementManagementAssignmentPolicy -BodyParameter $policy2Params
    

Créer des stratégies supplémentaires pour permettre aux utilisateurs de demander l’accès

Si vous souhaitez que les utilisateurs qui n’ont pas encore d’accès puissent demander à être affectés à l’application, vous pouvez également configurer une stratégie d’affectation de package d’accès pour permettre aux utilisateurs de demander un package d’accès. Vous pouvez ajouter des stratégies à un package d’accès et, dans chaque stratégie, spécifier quels utilisateurs peuvent formuler une demande et qui doit accorder l’approbation. Si vous souhaitez que l’accès puisse être octroyé aux utilisateurs uniquement automatiquement ou par un administrateur, passez à la section suivante.

Pour obtenir plus d’exemples, consultez Créer une stratégie d’affectation via PowerShell, accessPackageAssignmentPolicy et Créer un objet assignmentPolicy.

  1. Spécifiez le nom, la description de la stratégie et l’ID d’un utilisateur Microsoft Entra qui sera l’approbateur.

    $policy3Name = "example policy"
    $policy3Description = "example of a policy for users to request assignment"
    $policy3ApproverSingleUserId = "1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5"
    
  2. Créez la stratégie.

    $policy3Params = @{
     displayName = $policy3Name
     description = $policy3Description
     allowedTargetScope = "allMemberUsers"
     expiration = @{
         type = "noExpiration"
     }
     requestorSettings = @{
         enableTargetsToSelfAddAccess = "true"
         enableTargetsToSelfUpdateAccess = "true"
         enableTargetsToSelfRemoveAccess = "true"
     }
     requestApprovalSettings = @{
         isApprovalRequiredForAdd = "true"
         isApprovalRequiredForUpdate = "true"
         stages = @(
             @{
                 durationBeforeAutomaticDenial = "P7D"
                 isApproverJustificationRequired = "false"
                 isEscalationEnabled = "false"
                 fallbackPrimaryApprovers = @(
                 )
                 escalationApprovers = @(
                 )
                 fallbackEscalationApprovers = @(
                 )
                 primaryApprovers = @(
                     @{
                         "@odata.type" = "#microsoft.graph.singleUser"
                         userId = $policy3ApproverSingleUserId
                     }
                 )
             }
         )
     }
     accessPackage = @{
         id = $accessPackageId
     }
    }
    
    New-MgEntitlementManagementAssignmentPolicy -BodyParameter $policy3Params
    

Configurer des tâches de workflows de cycle de vie

Si vous utilisez des workflows de cycle de vie Microsoft Entra pour les événements de recrutement, de mutation ou de fin de contrat des employés, vous pouvez également ajouter des tâches à ces workflows afin d’ajouter ou de supprimer des affectations de ce package d’accès. Si vous n’utilisez pas de workflows de cycle de vie, passez à la section suivante.

Cet exemple montre comment apporter une modification aux workflows d’événements de recrutement et de fin de contrat.

  1. Récupérez le workflow de catégorie joiner et ses tâches à l’aide de la commande Get-MgIdentityGovernanceLifecycleWorkflow.

  2. Ajoutez une tâche à la liste des tâches de ce workflow.

    Nom d’affichage de la tâche taskDefinitionId arguments
    Demander une attribution de package d’accès pour un utilisateur c1ec1e76-f374-4375-aaa6-0bb6bd4c60be nom : assignmentPolicyId
    valeur : ID de stratégie d’affectation, tel que la valeur de $directAssignmentPolicyId si aucune approbation n’est requise, pour le package d’accès que vous souhaitez affecter à l’utilisateur.

    nom : accessPackageId
    valeur : ID du package d’accès, $accessPackageId, pour le package d’accès que vous souhaitez affecter à l’utilisateur.
  3. Créez une nouvelle version du workflow, incluant la nouvelle tâche, à l’aide de la commande New-MgIdentityGovernanceLifecycleWorkflowNewVersion.

  4. Récupérez le workflow de catégorie leaver et ses tâches à l’aide de la commande Get-MgIdentityGovernanceLifecycleWorkflow.

  5. Ajoutez une tâche à la liste des tâches de ce workflow.

    Nom d’affichage de la tâche taskDefinitionId arguments
    Supprimer l’attribution de package d’accès pour l’utilisateur 4a0b64f2-c7ec-46ba-b117-18f262946c50 nom : accessPackageId
    valeur : ID de package d’accès valide, accessPackageId pour le package d’accès que vous souhaitez désaffecter de l’utilisateur.
  6. Créez une nouvelle version du workflow, incluant la nouvelle tâche, à l’aide de la commande New-MgIdentityGovernanceLifecycleWorkflowNewVersion.

Gérer les affectations

Une fois que les packages d’accès, les stratégies et les affectations initiales ont été créés, les utilisateurs disposent de l’accès au rôle de l’application.

Plus tard, vous pouvez superviser les modifications apportées aux affectations, ou ajouter ou supprimer des affectations par programmation.

Récupérer des affectations existantes

Ce script illustre l’utilisation d’un filtre pour récupérer les affectations au package d’accès qui sont à l’état Delivered. Le script génère un fichier CSV assignments.csv contenant une liste d’utilisateurs qui ont des affectations, avec une ligne par affectation.

$assignmentFilter = "accessPackage/id eq '" + $accessPackageId + "' and state eq 'Delivered'"
$assignments = @(Get-MgEntitlementManagementAssignment -Filter $assignmentFilter -ExpandProperty target -All -ErrorAction Stop)
$sp = $assignments | select-object -Property Id,{$_.Target.id},{$_.Target.ObjectId},{$_.Target.DisplayName},{$_.Target.PrincipalName}
$sp | Export-Csv -Encoding UTF8 -NoTypeInformation -Path ".\assignments.csv"

Supprimer une affectation

Vous pouvez supprimer l’affectation d’un utilisateur avec la cmdlet New-MgEntitlementManagementAssignmentRequest.

$userId = "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
$filter = "accessPackage/Id eq '" + $accessPackageId + "' and state eq 'Delivered' and target/objectId eq '" + $userId + "'"
$assignment = Get-MgEntitlementManagementAssignment -Filter $filter -ExpandProperty target -all -ErrorAction stop
if ($assignment -ne $null) {
   $params = @{
      requestType = "adminRemove"
      assignment = @{ id = $assignment.id }
   }
   New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
}

Étapes suivantes