Comment créer une structure d’unités organisationnelles (UO) claire dans Active Directory à l’aide de PowerShell

Créer de nouvelles unités d’organisation (UO) dans Active Directory peut vite devenir fastidieux si vous devez le faire manuellement à chaque fois. C’est particulièrement vrai lors de la mise en place d’une succursale ou du déploiement de nouvelles structures dans différentes régions. Il est facile d’oublier des autorisations, de manquer des conteneurs imbriqués ou tout simplement de perdre un temps précieux à naviguer dans ADUC (Utilisateurs et ordinateurs Active Directory).

Une solution rapide pour gérer cela consiste à utiliser PowerShell. C’est un peu inhabituel, mais l’utilisation de scripts permet de gagner des heures et offre une bien meilleure fiabilité, une fois maîtrisée. Vous pourrez créer des hiérarchies d’unités d’organisation (UO) complètes, des groupes de sécurité et déléguer des autorisations instantanément. De plus, vous pouvez ajouter toutes les autres actions que vous êtes susceptible d’effectuer, comme la configuration de GPO ciblant ces UO. C’est bien là tout l’intérêt de l’automatisation, n’est-ce pas ?

Comment automatiser la création de structures d’unités organisationnelles et d’autorisations dans Active Directory

Méthode 1 : Création et gestion de base d’unités organisationnelles (UO) avec PowerShell

Commencez par les modules PowerShell appropriés, et plus précisément le module Active Directory. Celui-ci provient généralement des outils RSAT (outils d’administration de serveur distant).Si vous ne l’avez pas encore importé, procédez comme suit :

Import-Module ActiveDirectory

Si cela ne fonctionne pas, sous Windows 10/11 ou Server, assurez-vous que RSAT est installé (via les fonctionnalités facultatives).Une fois installé, vous pouvez créer des unités d’organisation (UO) avec une commande similaire à :

New-ADOrganizationalUnit -Name "Berlin" -Path "OU=DE, DC=woshub, DC=com" -Description "Berlin branch"

Ici, l’option `-Path` est cruciale : indiquez votre unité d’organisation parente ou le domaine racine. Si vous l’omettez, une unité d’organisation sera créée au niveau supérieur, ce qui pourrait ne pas vous convenir. Dans certaines configurations, cette valeur par défaut est acceptable, mais dans d’autres, le chemin exact est requis.

Conseil de pro : vous pouvez trouver les chemins actuels en parcourant ADUC ou en utilisant Get-ADOrganizationalUnit.

Méthode 2 : Ajuster les attributs et protéger contre la suppression accidentelle

Par défaut, Active Directory (AD) définit ProtectedFromAccidentalDeletion sur $true, ce qui semble convenir jusqu’à ce que vous souhaitiez supprimer des éléments via un script. Pour désactiver cette protection, il suffit d’utiliser une commande Set-ADOrganizationalUnitcomme celle-ci :

Get-ADOrganizationalUnit -Identity "OU=Users, OU=Berlin, OU=DE, DC=woshub, DC=com" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false

Ainsi, vous pourrez supprimer ultérieurement les unités d’organisation de test sans problème. Sur certaines machines, cette commande doit être exécutée en tant qu’administrateur ; sinon, elle peut sembler ne pas fonctionner immédiatement. Un redémarrage de la console ou une actualisation résout généralement le problème.

Méthode 3 : Supprimer les unités organisationnelles et leurs objets

Si vous devez nettoyer ou réinitialiser des unités d’organisation (UO), la commande Remove-ADObject vous sera utile, mais attention : l’option -Recursive supprimera tout leur contenu. Exemple :

Remove-ADObject -Identity "OU=Users, OU=Berlin, OU=DE, DC=woshub, DC=com" -Recursive

C’est pratique pour tester des structures ou corriger des échecs. Vérifiez simplement le nom distinctif (DN) avant l’exécution.

Méthode 4 : Créer une structure de succursale type à l’aide d’un script

Supposons que votre entreprise possède plusieurs succursales, chacune avec le même modèle de conteneur. Vous pouvez créer un script pour générer la structure complète, y compris les groupes et les autorisations déléguées. Voici un exemple simplifié de ce que ferait ce script :

# Define variables $Country="DE" $City="HH" $CityFull="Hamburg" $DomainDN=(Get-ADDomain).DistinguishedName $ParentOU= "OU=$Country, $DomainDN" $OUs = @("Admins", "Computers", "Contacts", "Groups", "Servers", "Service Accounts", "Users") # Create main OU for branch $newOU=New-ADOrganizationalUnit -Name $CityFull -Path $ParentOU -Description "A container for $CityFull users" -PassThru # Loop through sub-OU names and create each inside the main OU foreach ($OU in $OUs) { New-ADOrganizationalUnit -Name $OU -Path $newOU } # Create branch admin groups $adminGroupName = "$City" + "_admins" New-ADGroup -Name $adminGroupName -Path ("OU=Admins, " + $newOU. DistinguishedName) -GroupScope Global -PassThru $accountManagersGroup = "$City" + "_account_managers" New-ADGroup -Name $accountManagersGroup -Path ("OU=Admins, " + $newOU. DistinguishedName) -GroupScope Global -PassThru $wksAdminsGroup = "$City" + "_wks_admins" New-ADGroup -Name $wksAdminsGroup -Path ("OU=Admins, " + $newOU. DistinguishedName) -GroupScope Global -PassThru # Grant permissions to specific groups on the Users OU to delegate password reset rights, for example # Note: You’ll probably need to tweak rights based on your needs and use Set-ACL for finer control 

Il existe de nombreuses possibilités d’extension, comme l’attribution de GPO ou la délégation d’autorisations spécifiques sur d’autres unités d’organisation. PowerShell simplifie grandement la tâche une fois les bases acquises. Le script disponible sur GitHub constitue un bon point de départ, avec de nombreux commentaires.

Petit rappel : il est conseillé de vérifier votre stratégie d’exécution avant d’exécuter des scripts (par exemple, en exécutant la commande `powershes` Set-ExecutionPolicy RemoteSigned) ou de vous assurer d’être administrateur de domaine. Dans le cas contraire, PowerShell risque de refuser l’exécution du script ou de générer des erreurs.

Conclure

Utiliser PowerShell pour gérer Active Directory peut sembler intimidant au premier abord, mais une fois la technique maîtrisée, c’est une véritable révolution. Automatiser la création d’unités d’organisation, la configuration des groupes et la délégation des autorisations en une seule étape : voilà le genre de choses qui valent bien le petit effort initial. Si vous gérez plusieurs branches ou si vous en avez assez de cliquer partout, apprendre à utiliser ces scripts vous fera gagner un temps précieux à long terme.

Résumé

  • Utilisez New-ADOrganizationalUnit pour créer des unités d’organisation en masse.
  • Modifiez les attributs avec Set-ADOrganizationalUnit si nécessaire.
  • Supprimez facilement les unités d’organisation avec Remove-ADObject.
  • Automatisez les structures imbriquées et les autorisations grâce aux scripts PowerShell.
  • Étendez les fonctionnalités en ajoutant des GPO ou d’autres tâches personnalisées pour chaque branche.

J’espère que ça aidera.