====== Gérer les comptes d'utilisateurs Office 365 ======
===== Ressources =====
* https://docs.microsoft.com/fr-fr/microsoft-365/enterprise/view-user-accounts-with-microsoft-365-powershell
* https://docs.microsoft.com/fr-fr/microsoft-365/enterprise/manage-user-accounts-and-licenses-with-microsoft-365-powershell?view=o365-worldwide
===== Se connecter au locataire Microsoft 365=====
PS > Connect-AzureAD
===== Lister les comptes =====
* Lister tous les comptes
PS > Get-AzureADUser
ObjectId DisplayName UserPrincipalName UserType
-------- ----------- ----------------- --------
2d5dee3e-0665-4675-bf29-18b8a79f4651 31b93a88.educ-valadon-limoges.fr@fr.teams.ms 31b93a88.educ-valadon-limoges.fr_fr.teams.ms#EXT#@educ-valadon-limoges.fr Guest
7e58156b-9145-46de-97fd-e84d1fcef12c Killian ABADA abada.killian@educ-valadon-limoges.fr Member
bee1c80b-7d28-447a-a493-8024c7d7a7e1 Chaïma ABBOU abbou.chaima@educ-valadon-limoges.fr Member
* Lister intégralement tous les comptes
PS > Get-AzureADUser -Top 10000
* Lister un compte spécifique
PS /home/administrateur> Get-AzureADUser -ObjectID techer.charles@educ-valadon-limoges.fr
ObjectId DisplayName UserPrincipalName UserType
-------- ----------- ----------------- --------
c7f2e846-6fa0-4ca7-9cba-a23f7f829292 Charles TECHER techer.charles@educ-valadon-limoges.fr Member Member
* Lister toutes les propriétés d'un compte
PS /home/administrateur> Get-AzureADUser -ObjectID techer.charles@educ-valadon-limoges.fr | select *
ExtensionProperty : {[odata.metadata, https://graph.windows.net/1ae69c2d-61b2-4de4-84c7-2a4dd0de7330/$metadata#directoryObjects/@Element], [odata.type, Microsoft.DirectoryServices.User], [createdDateTime, 9/19/2019 8:28:29
AM], [employeeId, ]…}
DeletionTimestamp :
ObjectId : c7f2e846-6fa0-4ca7-9cba-a23f7f829292
ObjectType : User
AccountEnabled : True
AgeGroup :
AssignedLicenses : {class AssignedLicense {
DisabledPlans: System.Collections.Generic.List`1[System.String]
SkuId: 12b8c807-2e20-48fc-b453-542b6ee9d171
}
, class AssignedLicense {
DisabledPlans: System.Collections.Generic.List`1[System.String]
SkuId: f30db892-07e9-47e9-837c-80727f46fd3d
}
, class AssignedLicense {
DisabledPlans: System.Collections.Generic.List`1[System.String]
SkuId: 94763226-9b3c-4e75-a931-5c89701abe66
}
, class AssignedLicense {
DisabledPlans: System.Collections.Generic.List`1[System.String]
SkuId: a403ebcc-fae0-4ca2-8c8c-7a907fd6c235
}
}
AssignedPlans : {class AssignedPlan {
AssignedTimestamp: 4/8/2021 12:06:30 PM
CapabilityStatus: Enabled
Service: CRM
ServicePlanId: 40b010bb-0b69-4654-ac5e-ba161433f4b4
}
, class AssignedPlan {
AssignedTimestamp: 4/8/2021 12:06:30 PM
CapabilityStatus: Enabled
Service: ProjectProgramsAndPortfolios
ServicePlanId: a55dfd10-0864-46d9-a3cd-da5991a3e0e2
}
, class AssignedPlan {
AssignedTimestamp: 10/18/2019 1:03:58 PM
CapabilityStatus: Enabled
Service: OfficeForms
ServicePlanId: 9b5de886-f035-4ff2-b3d8-c9127bea3620
}
, class AssignedPlan {
AssignedTimestamp: 10/18/2019 1:03:58 PM
CapabilityStatus: Enabled
Service: SharePoint
ServicePlanId: e03c7e47-402c-463c-ab25-949079bedb21
}
…}
City :
CompanyName : Lycée Suzanne Valadon
ConsentProvidedForMinor :
Country :
CreationType :
Department : Professeurs / Eco-Info
DirSyncEnabled : True
DisplayName : Charles TECHER
FacsimileTelephoneNumber :
GivenName : Charles
IsCompromised :
ImmutableId : dktyPZ6Ptk+Q7+JRtXvCLA==
JobTitle : Professeurs
LastDirSyncTime : 8/30/2022 9:39:22 AM
LegalAgeGroupClassification :
Mail : techer.charles@educ-valadon-limoges.fr
MailNickName : techer.charles
Mobile :
OnPremisesSecurityIdentifier : S-1-5-21-3235202287-4148145215-1993724183-3292
OtherMails : {}
PasswordPolicies :
PasswordProfile : class PasswordProfile {
Password:
ForceChangePasswordNextLogin: True
EnforceChangePasswordPolicy: False
}
PhysicalDeliveryOfficeName : Eco-Info
PostalCode :
PreferredLanguage :
ProvisionedPlans : {class ProvisionedPlan {
CapabilityStatus: Enabled
ProvisioningStatus: Success
Service: SharePoint
}
, class ProvisionedPlan {
CapabilityStatus: Enabled
ProvisioningStatus: Success
Service: CRM
}
, class ProvisionedPlan {
CapabilityStatus: Enabled
ProvisioningStatus: Success
Service: SharePoint
}
, class ProvisionedPlan {
CapabilityStatus: Enabled
ProvisioningStatus: Success
Service: MicrosoftCommunicationsOnline
}
…}
ProvisioningErrors : {}
ProxyAddresses : {smtp:techer.charles@educvaladonlimogesfr.onmicrosoft.com, SMTP:techer.charles@educ-valadon-limoges.fr}
RefreshTokensValidFromDateTime : 9/19/2019 8:28:29 AM
ShowInAddressList :
SignInNames : {}
SipProxyAddress : techer.charles@educ-valadon-limoges.fr
State :
StreetAddress :
Surname : TECHER
TelephoneNumber :
UsageLocation : FR
UserPrincipalName : techer.charles@educ-valadon-limoges.fr
UserState :
UserStateChangedOn :
UserType : Member
===== Afficher l’état de synchronisation du compte =====
Les comptes d’utilisateur ont deux sources :
* Windows Server Active Directory (AD), qui sont des comptes qui se synchronisent entre AD local et le cloud.
* Azure Active Directory comptes (Azure AD), qui sont créés directement dans le cloud.
La commande suivante permet de rechercher les comptes qui se synchronisent à partir d’AD local en demandant à PowerShell d’obtenir la valeur True pour tous les utilisateurs dont l’attribut **DirSyncEnabled** est défini.
PS > Get-AzureADUser | Where {$_.DirSyncEnabled -eq $true}
La commande suivante permet de rechercher des comptes cloud uniquement en indiquant à PowerShell d’obtenir tous les utilisateurs dont l’attribut **DirSyncEnabled** a la valeur **False** ou non défini (**Null**) :
* Un compte qui n’a jamais été synchronisé à partir d’AD local a DirSyncEnabled défini sur Null.
* Un compte qui a été synchronisé initialement à partir d’AD local mais qui n’est plus synchronisé a la valeur False pour DirSyncEnabled.
PS > Get-AzureADUser | Where {$_.DirSyncEnabled -ne $true}
===== Afficher les comptes en fonction d’une propriété commune =====
L’applet de commande **Where** en combinaison avec l’applet de commande **Get-AzureADUser** en utilisant le caractère « pipe » (« | »), qui indique à Azure Active Directory PowerShell de prendre les résultats d’une commande et de l’envoyer à la commande suivante permet d'affiche uniquement les comptes d’utilisateur dont l’emplacement d’utilisation n’est pas spécifié :
PS > Get-AzureADUser | Where {$_.UsageLocation -eq $Null}
La syntaxe de l’applet de commande **Where** est **Where {$_**. [nom de la propriété du compte d’utilisateur] [opérateur de comparaison] [valeur] }.
[opérateur de comparaison] est :
* -eq for equals,
* -ne for not equals,
* -lt for inférieur à,
* -gt for great than, and others.
* -Like avec els joker * et ?
[value] est généralement une chaîne (une séquence de lettres, de nombres et d’autres caractères), une valeur numérique ou $Null pour les caractères non spécifiés.
Pour plus d’informations, consultez Where : https://docs.microsoft.com/fr-fr/powershell/module/microsoft.powershell.core/where-object
===== Afficher les groupes en fonction d’une propriété commune =====
PS > Get-AzureADGroup -Top 1000| Where {$_.Description -Like "*koxo*"}
===== Lister les membres d'un groupe =====
PS > Get-AzureADGroupMember -ObjectId (Get-AzureADGroup -Top 1000 | where {$_.Description -eq "[koxoadm] b2 sio2"}).ObjectId | select UserPrincipalName, GivenName, SurName
===== exporter les membres d'un groupe =====
PS >Get-AzureADGroupMember -ObjectId (Get-AzureADGroup -Top 1000 | where {$_.Description -eq "[koxoadm] b2 sio2"}).ObjectId | select UserPrincipalName, GivenName, SurName, Mail | Export-CSV -Path "clouddrive/importB2SIO2.csv"
PS > Get-AzureADGroupMember -ObjectId (Get-AzureADGroup -Top 1000 | where {$_.Description -eq "[koxoadm] Classe de b2 sio"}).ObjectId | select UserPrincipalName, GivenName, SurName, Mail | Export-CSV -Path "clouddrive/importB2SIO.csv"
PS > Get-AzureADGroupMember -ObjectId (Get-AzureADGroup -Top 1000 | where {$_.Description -eq "[koxoadm] Classe de b1 sio"}).ObjectId | select UserPrincipalName, GivenName, SurName, Mail | Export-CSV -Path "clouddrive/importB1SIO.csv"
PS > Get-AzureADGroupMember -ObjectId (Get-AzureADGroup -Top 1000 | where {$_.Description -eq "[koxoadm] Classe de b1 sio2"}).ObjectId | select UserPrincipalName, GivenName, SurName, Mail | Export-CSV -Path "clouddrive/importB1SIO2.csv"