L’installation des modules est nécessaire pour le bon fonctionnement de cette procédure.
Il est possible que le lancement de script ne soit pas autorisé sur votre PC dans ce cas il faut faire cette commande :
Get-ExecutionPolicy (pour voir le status)
set-executionpolicy remotesigned (pour autoriser)
Install-Module -Name ExchangeOnlineManagement
Connect-ExchangeOnline
Création d’une liste de distribution : Uniquement les boites Standard, actif, avec nom d’entreprise “X”
New-DynamicDistributionGroup -Name "NAME LISTE" -RecipientFilter "RecipientTypeDetails -eq 'UserMailbox' -and
-not(RecipientTypeDetailsValue -eq 'SharedMailbox') -and
-not(Name -like 'SystemMailbox{*') -and
-not(Name -like 'CAS_{*') -and
-not(RecipientTypeDetailsValue -eq 'MailboxPlan') -and
-not(RecipientTypeDetailsValue -eq 'DiscoveryMailbox') -and
-not(RecipientTypeDetailsValue -eq 'PublicFolderMailbox') -and
-not(RecipientTypeDetailsValue -eq 'ArbitrationMailbox') -and
-not(RecipientTypeDetailsValue -eq 'AuditLogMailbox') -and
-not(RecipientTypeDetailsValue -eq 'AuxAuditLogMailbox') -and
-not(RecipientTypeDetailsValue -eq 'SupervisoryReviewPolicyMailbox') -and
-not(RecipientType -eq 'MailUniversalDistributionGroup') -and
-not(RecipientType -eq 'MailContact') -and
-not(RecipientTypeDetailsValue -eq 'EquipmentMailbox') -and
-not(UserAccountControl -eq 'AccountDisabled, NormalAccount') -and
(Company -eq 'ENTREPRISE')"
Création d’une liste de distribution All users sauf compte inactif et shared
New-DynamicDistributionGroup -Name "NAME LISTE" -RecipientFilter "RecipientTypeDetails -eq 'UserMailbox' -and
-not(RecipientTypeDetailsValue -eq 'SharedMailbox') -and
-not(Name -like 'SystemMailbox{*') -and
-not(Name -like 'CAS_{*') -and
-not(RecipientTypeDetailsValue -eq 'MailboxPlan') -and
-not(RecipientTypeDetailsValue -eq 'DiscoveryMailbox') -and
-not(RecipientTypeDetailsValue -eq 'PublicFolderMailbox') -and
-not(RecipientTypeDetailsValue -eq 'ArbitrationMailbox') -and
-not(RecipientTypeDetailsValue -eq 'AuditLogMailbox') -and
-not(RecipientTypeDetailsValue -eq 'AuxAuditLogMailbox') -and
-not(RecipientTypeDetailsValue -eq 'SupervisoryReviewPolicyMailbox') -and
-not(RecipientType -eq 'MailUniversalDistributionGroup') -and
-not(RecipientType -eq 'MailContact') -and
-not(RecipientTypeDetailsValue -eq 'EquipmentMailbox') -and
-not(UserAccountControl -eq 'AccountDisabled, NormalAccount')"
FILTRE : Uniquement les boites Standard, actif, avec nom d’entreprise “X”
$Filter = "RecipientTypeDetails -eq 'UserMailbox' -and
-not(RecipientTypeDetailsValue -eq 'SharedMailbox') -and
-not(Name -like 'SystemMailbox{*') -and
-not(Name -like 'CAS_{*') -and
-not(RecipientTypeDetailsValue -eq 'MailboxPlan') -and
-not(RecipientTypeDetailsValue -eq 'DiscoveryMailbox') -and
-not(RecipientTypeDetailsValue -eq 'PublicFolderMailbox') -and
-not(RecipientTypeDetailsValue -eq 'ArbitrationMailbox') -and
-not(RecipientTypeDetailsValue -eq 'AuditLogMailbox') -and
-not(RecipientTypeDetailsValue -eq 'AuxAuditLogMailbox') -and
-not(RecipientTypeDetailsValue -eq 'SupervisoryReviewPolicyMailbox') -and
-not(RecipientType -eq 'MailUniversalDistributionGroup') -and
-not(RecipientType -eq 'MailContact') -and
-not(RecipientTypeDetailsValue -eq 'EquipmentMailbox') -and
-not(UserAccountControl -eq 'AccountDisabled, NormalAccount') -and
(Company -eq 'NOM ENTREPRISE')"
FILTRE: Tester le filtre
depuis le terminal
Get-Recipient -RecipientPreviewFilter $Filter | Ft DisplayName, Title
Vers un fichier csv
Get-Recipient -RecipientPreviewFilter $Filter | Select-Object DisplayName, Title | Export-Csv -Path "C:\temp\users.csv" -NoTypeInformation
LISTE: Appliquer une règle via une variable :
Set-DynamicDistributionGroup -Identity "ALL USERS" -RecipientFilter $Filter
$FTE = Get-DynamicDistributionGroup -Identity "NOM DE LA LISTE"
$Members = Get-Recipient -RecipientPreviewFilter $FTE.RecipientFilter | Select-Object DisplayName,city
$Members | Export-Csv -Path "C:/temp/export_users.csv" -NoTypeInformation -Encoding UTF8
Script a lancer depuis un AD ou RDC
# Import the Active Directory module
Import-Module ActiveDirectory
# Spécifie le chemin de l'OU
$ouPath = "OU=l'OU,OU=UTILISATEURS,OU=blablbla,DC=lan,DC=lakaja,DC=Nike"
# Spécifie la nouvelle valeur de la propriété 'company'
$newCompany = "NIKE L.C.C"
# Récupère tous les utilisateurs dans l'OU spécifiée
$users = Get-ADUser -Filter * -SearchBase $ouPath
# Parcourt chaque utilisateur et met à jour la propriété 'company'
foreach ($user in $users) {
Set-ADUser -Identity $user -Company $newCompany
Write-Host "La propriété 'company' de l'utilisateur $($user.SamAccountName) a été mise à jour à $newCompany"
}
Write-Host "Mise à jour terminée pour tous les utilisateurs dans l'OU $ouPath."