Gestion des unités d'organisation et déplacement de leurs objets avec PowerShell
Jun 26, 2018
Une unité organisationnelle (OU) est un conteneur dans Active Directory où les utilisateurs, les groupes et les ordinateurs, ainsi que d'autres OU, peuvent être stockés. Chaque AD domain peut avoir sa propre hiérarchie d'unités organisationnelles.
Dans cet article, vous apprendrez la gestion des unités d'organisation (OU) et comment utiliser des scripts PowerShell pour créer, déplacer et supprimer des unités organisationnelles dans AD ; lier une Group Policy à une OU ; et déplacer des comptes d'ordinateurs et d'utilisateurs vers une autre OU.
PowerShell ISE est le meilleur outil pour travailler avec des scripts PowerShell. Démarrez l'outil PowerShell ISE avec des privilèges d'administrateur en appuyant sur « Windows+R » et en saisissant « runas /profile /user:Administrator PowerShell_ISE » dans la fenêtre Exécuter. Tapez le mot de passe de l'administrateur lorsque cela est demandé. Alternativement, vous pouvez faire un clic droit sur l'icône PowerShell ISE et choisir l'option « Exécuter en tant qu'administrateur ».
Pour travailler avec AD et ses objets, vous devez importer le module Active Directory pour Windows PowerShell. Dans Microsoft Windows Server 2008 R2, vous devez activer ce module en exécutant la commande suivante :
Import-Module ActiveDirectory
Dans Microsoft Windows Server 2012 et les versions ultérieures, ce module est activé par défaut.
Créez des OU dans un domaine Active Directory avec PowerShell
Vous pouvez créer une nouvelle unité organisationnelle dans Active Directory en utilisant le cmdlet New-ADOrganizationalUnit et en spécifiant le nom d'un nouvel objet OU. Par défaut, PowerShell créera l'OU dans la racine du domaine. La commande ci-dessous créera une OU nommée « Régions » sur le DC :
New-ADOrganizationalUnit “Regions”
Si vous avez besoin d'un chemin LDAP d'unité d'organisation différent, spécifiez son nom distinctif en utilisant le paramètre de l'applet de commande –Path:
New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”
Déplacer une OU vers une autre adresse LDAP
Si vous devez déplacer une UO vers un autre emplacement, utilisez la cmdlet Move-ADObject. Notez que l'UO cible ne doit pas être protégée contre la suppression accidentelle. Si c'est le cas, utilisez cette commande pour retirer cette protection :
Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $False
Maintenant, vous pouvez déplacer l'OU vers un autre emplacement :
Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"
Renommer une unité d'organisation
Pour renommer une unité organisationnelle, utilisez la cmdlet Rename-ADObject. Le paramètre -Identity spécifie l'objet Active Directory à renommer et nécessite soit son nom distinctif (DN) soit son GUID.
Cette commande renomme l'OU “Regions” en “Districts” :
Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName Districts
Alternativement, vous pouvez utiliser le cmdlet Get-ADOrganizationalUnit avec le paramètre -Filter; cela ne nécessite pas le chemin LDAP complet vers l'OU. Cependant, ce cmdlet recherchera dans tout l'AD et l'action sera appliquée à tous les OU qui contiennent le terme de recherche dans leurs noms :
Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName Countries
Appliquez une stratégie de groupe à une unité d'organisation
Pour assigner une stratégie de groupe à une unité d'organisation, utilisez la cmdlet New-GPLink qui crée essentiellement un lien entre l'objet de stratégie de groupe (GPO) spécifié et l'unité d'organisation. Vous pouvez spécifier l'une des propriétés suivantes pour le lien :
- Activé — Si le lien est activé, les paramètres du GPO sont appliqués lorsque la stratégie de groupe est traitée pour le site, le domaine ou l'unité organisationnelle.
- Appliqué — Si le lien est appliqué, il ne peut pas être bloqué dans un conteneur de niveau inférieur.
- Ordre — L'ordre indique la précédence des paramètres GPO.
La commande suivante associe le GPO « Block Software » à l'OU « Districts » avec le lien activé et appliqué :
New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes
Déplacer des ordinateurs et des utilisateurs vers une nouvelle UO
Une fois que vous avez créé une unité d'organisation (OU) et éventuellement lié un objet de stratégie de groupe (GPO), il est temps de la remplir avec des utilisateurs et des ordinateurs. La cmdlet PowerShell Move-ADObject déplace n'importe quel objet ou ensemble d'objets (comme un utilisateur, un ordinateur, un groupe ou une autre OU) vers une OU différente. Le paramètre -Identity spécifie quel objet ou conteneur Active Directory déplacer. Notez que vous devez entrer le chemin LDAP complet ou le SID de l'objet ; vous ne pouvez pas utiliser son SamAccountName. L'exemple ci-dessous démontre comment déplacer un utilisateur (John Brown) vers l'OU « Districts » :
Move-ADObject -Identity "CN=John Brown,CN=Users,DC=enterprise,DC=com" -TargetPath "OU=Districts,OU=IT,DC=Enterprise,DC=Com"
Utilisez la même syntaxe pour déplacer des objets ordinateur. La commande suivante déplacera l'ordinateur “R07GF” vers le conteneur “Computers” :
Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=Com
Déplacer des ordinateurs et utilisateurs AD vers un autre UO en utilisant un fichier CSV ou TXT
Si vous avez une liste prédéfinie d'objets à déplacer, vous pouvez l'enregistrer sous forme de fichier CSV puis importer ce fichier dans Active Directory. La liste CSV doit être au format suivant :
Utilisez ce script PowerShell pour déplacer les comptes d'utilisateurs AD répertoriés dans un fichier CSV :
# Specify target OU. This is where users will be moved.
$TargetOU = "OU=Districts,OU=IT,DC=enterprise,DC=com"
# Specify CSV path. Import CSV file and assign it to a variable.
$Imported_csv = Import-Csv -Path "C:tempMoveList.csv"
$Imported_csv | ForEach-Object {
# Retrieve DN of user.
$UserDN = (Get-ADUser -Identity $_.Name).distinguishedName
# Move user to target OU.
Move-ADObject -Identity $UserDN -TargetPath $TargetOU
}
Pour déplacer les comptes d'ordinateurs AD répertoriés dans un fichier texte, utilisez le script PowerShell suivant :
# Specify path to the text file with the computer account names.
$computers = Get-Content C:TempComputers.txt
# Specify the path to the OU where computers will be moved.
$TargetOU = "OU=Districts,OU=IT,DC=enterprise,DC=com"
ForEach( $computer in $computers){
Get-ADComputer $computer |
Move-ADObject -TargetPath $TargetOU
}
Supprimer une OU de AD
La cmdlet Remove-ADOrganizationalUnit supprime une unité d'organisation (OU). L'OU ne doit pas être protégée contre la suppression accidentelle. Vous pouvez retirer l'option de protection contre la suppression accidentelle pour chaque OU qui contient « Continents » dans son nom en utilisant les cmdlets Get-ADOrganizationalUnit et Set-ADOrganizationalUnit comme suit :
Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $False
Utilisez la commande suivante pour supprimer chaque OU qui contient « Continents » dans son nom de AD :
Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –Recursive
Vous serez invité à confirmer la suppression :
Notez que le paramètre -Recursive supprime à la fois l'OU et tous ses objets enfants. Les objets enfants seront supprimés même si la protection contre la suppression est activée pour eux.
Conclusion
Maintenant que vous avez appris à gérer les UO dans Active Directory à l'aide de scripts PowerShell, vous pouvez automatiser une variété d'opérations simples liées à la gestion des UO. Avant d'essayer ces commandes, assurez-vous d'activer la fonctionnalité Active Directory Recycle Bin afin de pouvoir facilement revenir en arrière sur toute suppression erronée. Il est également judicieux de suivre attentivement tous les changements apportés à vos unités organisationnelles.
Contenu connexe sélectionné
- Comment trouver des utilisateurs et des ordinateurs désactivés ou inactifs dans AD en utilisant PowerShell
- Comment détecter les modifications apportées aux unités organisationnelles et aux groupes dans Active Directory
- Comment obtenir un rapport des permissions d'OU dans Active Directory
- Comment obtenir une liste de tous les utilisateurs d'une OU spécifique
- Comment lister tous les ordinateurs dans une OU
- Comment détecter qui a modifié les permissions d'une OU
Partager sur
En savoir plus
À propos de l'auteur
Jeff Melnick
Directeur de l'ingénierie des systèmes
Jeff est un ancien directeur de l'ingénierie des solutions mondiales chez Netwrix. Il est un blogueur, conférencier et présentateur de longue date chez Netwrix. Dans le blog Netwrix, Jeff partage des astuces et des conseils qui peuvent améliorer de manière significative votre expérience en administration système.
En savoir plus sur ce sujet
Lois sur la confidentialité des données par État : Différentes approches de la protection de la vie privée
Exemple d'analyse des risques : Comment évaluer les risques
Le Triangle CIA et son application dans le monde réel
Qu'est-ce que la gestion des documents électroniques ?
Analyse quantitative des risques : Espérance de perte annuelle