Créer des rapports d’OU Active Directory avec PowerShell

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érequisSi 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 :

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.

Objets provenant d’autres domaines ne peuvent pas être inclus dans les unités organisationnelles Active Directory. Les sections suivantes aborderont les commandes de base pour gérer les UO.

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. LeIdentity 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.

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?

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.

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/