Créez des rapports sur les unités organisationnelles Active Directory avec PowerShell. Une unité organisationnelle (OU) est un conteneur Active Directory (AD) où les utilisateurs, les groupes, les ordinateurs et d’autres OUs peuvent être stockés. Chaque domaine AD peut avoir sa propre hiérarchie d’unités organisationnelles. Cet article couvrira la gestion des OUs et comment utiliser des scripts PowerShell Windows pour déplacer, créer, supprimer et générer des rapports sur les OUs dans AD, ainsi que lier et imposer une stratégie de groupe à une OU.
Lire aussi Comment installer le module PowerShell Active Directory et importer
Créez des rapports sur les unités organisationnelles Active Directory avec PowerShell
Prérequis Si nous voulons suivre les exemples de scripts suivants dans cet article, nous devrons installer les composants prérequis.
Si nous voulons suivre les exemples de scripts dans cet article, nous devons installer les composants prérequis :
- Niveau fonctionnel de domaine – Windows Server 2016.
- Outils d’administration de serveur distant (RSAT) pour Active Directory installés sur votre poste de travail joint à un domaine.
- La dernière version de PowerShell, ou au moins PowerShell 5.x et supérieur sont requis pour exécuter les scripts.
Bien, comment créer des rapports d’unité d’organisation Active Directory avec PowerShell? Découvrons-le.
Comprendre les commandes d’unité organisationnelle
A Microsoft Active Directory domain container that can hold users, groups, and computers is an organizational unit (OU). It is the smallest unit to which a Windows system administrator can assign a Group Policy setting or account permission. An organizational unit may contain multiple OUs, but each attribute within the containing OU must be distinct.
Lisez également Déployer l’outil de surveillance Azure AD
Créer des UO dans Active Directory avec PowerShell
Nous pouvons créer un nouvel objet Unité Organisationnelle (UO) dans l’AD en utilisant la commande New-ADOrganizationalUnit et en spécifiant le nom de la nouvelle UO. Windows PowerShell créera par défaut l’Unité Organisationnelle (UO) dans la racine du domaine. Par exemple, la commande suivante créera une UO nommée IT sur le contrôleur de domaine (DC) :
New-ADOrganizationalUnit “IT”
Si nous avons besoin d’un chemin LDAP de UO différent, utilisez le paramètre -Path du cmdlet pour spécifier son nom distinct (DN) :
New-ADOrganizationalUnit “IT” –Path “OU=Users,DC=InfraSOS,DC=com”
Déplacer une UO dans un Active Directory avec PowerShell
Si nous devons déplacer un OU vers un autre emplacement, utilisez le Move-ADObject cmdlet. Il est essentiel de noter que nous ne devons pas protéger l’OU cible contre la suppression accidentelle. Si c’est le cas, utilisez la commande suivante pour supprimer la protection :
Set-ADOrganizationalUnit -Identity "OU=IT,OU=Users,DC=InfraSOS,DC=Com" -ProtectedFromAccidentalDeletion $False
Maintenant, nous pouvons déplacer l’OU vers un autre emplacement :
Move-ADObject -Identity "OU=Regions,OU=Managers,DC=InfraSOS,DC=Com" -TargetPath "OU=IT,DC=InfraSOS,DC=Com"
Renommer un OU dans un Active Directory avec PowerShell
Utilisez le Rename-ADObject cmdlet pour renommer une unité organisationnelle. Le paramètre Identity spécifie l’AD objet à renommer et nécessite soit le DN, soit l’ID GUID. Par exemple, cette commande change le nom de l’OU IT en Marketing :
Rename-ADObject -Identity "OU=Regions,OU=IT,DC=InfraSOS,DC=COM" -NewName Marketing
Nous pouvons également utiliser le Get-ADOrganizationalUnit cmdlet avec le -Filter paramètre, qui n’exige pas le chemin LDAP complet vers l’OU. Cependant, ce cmdlet recherchera l’ensemble de l’AD, et le script appliquera l’action de la commande à toutes les Unités Organisationnelles dont les noms contiennent le terme de recherche :
Get-ADOrganizationalUnit -Filter "Name -eq 'Zones'" | Rename-ADObject -NewName Area
Nous discuterons plus des commandes Get OU une fois que nous commencerons à générer des rapports.
Application d’une stratégie de groupe à une OU dans un Active Directory avec PowerShell
Pour attribuer une Groupe de stratégie à une Unité organisationnelle, nous pouvons utiliser la commande New-GPLink, qui lie l’objet de stratégie de groupe (GPO) spécifié et l’unité organisationnelle. De plus, nous pouvons identifier l’une des propriétés suivantes pour le lien :
- Activé – Si le lien a un état activé, les paramètres traités du GPO sont appliqués lorsque la stratégie de groupe est appliquée pour le site, le domaine et l’OU.
- Renforcé – Si le lien a un état renforcé, nous ne pouvons pas bloquer l’OU dans un conteneur de niveau inférieur.
- Ordre – L’ ordreétat spécifie la priorité des paramètres du GPO.
Par exemple, la commande suivante lie le GPO Block à l’Unité Organisationnelle IT avec le lien activé et appliqué :
New-GPLink -Name "Block" -Target "OU=Districts,OU=IT, DC=InfraSOS, DC=com" -LinkEnabled Yes -Enforced Yes
Déplacer les Utilisateurs et les Ordinateurs vers une Nouvelle OU dans un AD avec PowerShell
Après avoir créé une Unité Organisationnelle et éventuellement liée à un GPO, nous allons la remplir avec des utilisateurs et des ordinateurs. Move-ADObject La commande PowerShell déplace tout objet ou ensemble d’objets active directory vers une autre OU. Le–Identity paramètre indique quel objet doit être déplacé Active Directory objet ou conteneur.
Il est crucial de noter que nous devons entrer le chemin complet de l’objet LDAP ou SID; nous ne pouvons pas utiliser son SamAccountName. L’exemple suivant montre comment déplacer un utilisateur vers l’OU IT:
Move-ADObject -Identity "CN=marion,CN=Users,DC=InfraSOS,DC=com" -TargetPath "OU=IT,OU=Users,DC=InfraSOS,DC=com"
Utilisez la syntaxe exacte pour déplacer les objets de l’ordinateur. Par exemple, la commande suivante transférera l’ordinateur DESKTOP-01 vers le conteneur Computers:
Move-ADObject -Identity "CN=DESKTOP-01,OU=Computers,DC=InfraSOS,DC=com" -TargetPath "CN=Workstations,DC=InfraSOS,DC=com"
Déplacement en masse d’ordinateurs AD et d’utilisateurs vers une autre OU
Si nous avons une liste prédéfinie d’objets à déplacer, nous pouvons la sauvegarder sous forme de fichier texte, puis l’importer dans Active Directory. Préparez votre liste en ajoutant un objet AD par ligne. Le fichier texte contenant la liste devrait ressembler à ceci:

Utilisez ce script PowerShell pour déplacer les comptes d’utilisateurs AD répertoriés dans un fichier texte:
$destOU = "OU=Users,OU=IT,DC=InfraSOS,DC=com"
$usersList = Get-Content -Path "C:\temp\users.txt"
$usersList | ForEach-Object {
$userName = (Get-ADUser -Identity $_.Name).distinguishedName
Move-ADObject -Identity $userName -TargetPath $destOU
}
Pour déplacer les comptes d’ordinateurs AD répertoriés dans un fichier texte, utilisez le script PowerShell suivant:
$computers = Get-Content -Path "C:\Temp\Computers.txt"
$destOU = "OU=Computers,OU=IT,DC=InfraSOS,DC=com"
ForEach( $computer in $computers){
Get-ADComputer $computer |
Move-ADObject -TargetPath $destOU
}
Supprimer une OU d’Active Directory avec PowerShell
Le Remove-ADOrganizationalUnit cmdlet supprime une OU. Cependant, nous ne devons pas protéger l’OU contre la suppression accidentelle. En utilisant le Get-ADOrganizationalUnit et Set-ADOrganizationalUnit cmdlets, nous pouvons supprimer l’option de suppression inattendue pour chaque OU dont le nom contient le mot Zones:
Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $False
Utilisez la commande suivante pour supprimer chaque OU contenant Zones dans son nom de l’AD:
Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Remove-ADOrganizationalUnit –Recursive
Le système nous demandera de confirmer la suppression:
Notez que le -Recursive paramètre supprime à la fois l’OU et tous ses objets enfants. AD supprimera les objets enfants même s’ils sont protégés contre la suppression.
Également lire Utiliser l’outil de création de rapports Active Directory
Gérer les Unités Organisationnelles dans l’AD
Maintenant que nous avons abordé les commandes de base et les paramètres concernant les Unités Organisationnelles, nous allons discuter de la manière dont nous pouvons générer des rapports d’OU avec PowerShell.
Obtenir une liste de toutes les OUs avec PowerShell
Nous allons utiliser le Get-ADOrganizationalUnit cmdlet. Tout d’abord, trier par CanonicalName. Cette commande affiche une structure d’OU qui est plus facile à lire.
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
Format-Table CanonicalName, DistinguishedName
Voici un exemple sortie dans PowerShell lorsque nous exécutons la commande:
La sortie avec toutes les OUs dans l’AD est une excellente liste. Mais comment savons-nous si l’OU contient des utilisateurs?
Également lire Voir les rapports de groupes Active Directory
Obtenir une liste de tous les OU, y compris le nombre d’utilisateurs, avec PowerShell
Nous aimons utiliser PowerShell pour obtenir une liste des OU, y compris le nombre d’utilisateurs. Cette commande nous indiquera s’il y a des utilisateurs dans l’OU.
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
ForEach-Object {
[pscustomobject]@{
Name = Split-Path $_.CanonicalName -Leaf
CanonicalName = $_.CanonicalName
UserCount = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
}
}
Elle affichera une sortie avec la propriété de colonne UserCount. Si la propriété UserCount a une valeur de zéro, l’OU n’a pas d’utilisateurs. Elle n’apparaîtra pas si l’OU contient un objet d’ordinateur. Cette commande ne vérifiera et n’affichera qu’un nombre d’utilisateurs.
Exporter les OU dans AD vers un fichier CSV avec PowerShell
Nous voulons maintenant exporter la liste des OU dans AD. Ainsi, le script utilisera PowerShell pour obtenir les Unités Organisationnelles et les exporter vers un fichier texte.
$results = Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Sort-Object CanonicalName |
ForEach-Object {
[pscustomobject]@{
Name = Split-Path $_.CanonicalName -Leaf
CanonicalName = $_.CanonicalName
UserCount = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
}
}
$results | Out-File C:\export_OUs.txt -Encoding UTF8
Si nous voulons exporter vers un fichier CSV, modifiez la dernière ligne avec la commande suivante:
$results | Export-Csv -Path C:\export_OUs.csv -NoTypeInformation -Encoding UTF8
Après avoir exécuté la commande ci-dessus, trouvez le fichier exporté à l’emplacement spécifién.
Merci de lire notre article sur la création de rapports d’unités d’organisation Active Directory avec PowerShell. Nous allons conclure maintenant.
Lisez aussi Découvrez l’outil de gestion Office 365
Conclusion sur la création de rapports d’unités d’organisation Active Directory avec PowerShell
Maintenant que nous avons appris comment gérer les UO dans Active Directory en utilisant des scripts PowerShell, nous pouvons automatiser diverses opérations liées à la gestion des UO et générer des rapports en conséquence. Assurez-vous simplement d’activer la corbeille de récupération Active Directory avant d’essayer ces commandes afin de pouvoir facilement annuler toute suppression erronée. Il est également judicieux de suivre attentivement toutes les modifications apportées à vos unités organisationnelles.
N’hésitez pas à consulter notre contenu PowerShell sur notre blog ici.
Source:
https://infrasos.com/create-active-directory-ou-reports-with-powershell/