29 septembre 2026

Automatiser la création d’une Unité d’Organisation (OU) et la délégation de droits avec PowerShell

Automatiser la création d’une Unité d’Organisation (OU) et la délégation de droits avec PowerShellwindows
Photo: Ryszard Zaleski / Pexels
🖥️ Illustration
PowerShell – Gestion AD
PS C:\> New-ADOrganizationalUnit -Name « Finance » -Path « DC=contoso,DC=com » -ProtectedFromAccidentalDeletion $true
# Création de l’OU Finance
PS C:\> Get-ADOrganizationalUnit -Filter « Name -eq ‘Finance' »
DistinguishedName : OU=Finance,DC=contoso,DC=com
Name : Finance
ObjectClass : organizationalUnit

PS C:\> Get-ACL « AD:OU=Finance,DC=contoso,DC=com »
IdentityReference ActiveDirectoryRights
——————- ———————
CONTOSO\Finance-Admins Reset Password
CONTOSO\Finance-Admins Create Computer Objects

Contexte

Dans un environnement Active Directory, les Unités d’Organisation (OU) permettent de structurer les comptes et de déléguer la gestion à des équipes spécifiques (RH, services, etc.). Créer manuellement chaque OU et configurer les ACL peut être fastidieux et source d’erreurs.

OU PowerShell ADwindows
Photo: panumas nikhomkhai / Pexels

Quand l’utiliser ?

  • Déploiement d’une nouvelle branche ou d’un service interne.
  • Mise en place d’une politique de délégation granulaire (ex. : un groupe de support pourra réinitialiser les mots de passe uniquement dans son OU).
  • Automatisation via scripts d’infrastructure-as-code.

🔹 Étapes

  1. Pré‑requis – Le serveur doit disposer du module ActiveDirectory et le compte exécutant le script doit être membre de Domain Admins ou disposer des droits suffisants.
  2. Définir les variables
  3. # Variables
    $ouName   = "OU=Finance,DC=contoso,DC=com"
    $ouPath   = "OU=Finance,DC=contoso,DC=com"
    $delegatedGroup = "Finance-Admins"
    $delegatedUser = "Finance-Admins"
    
  4. Créer l’OU
  5. # Crée l'OU si elle n'existe pas
    if (-not (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$ouPath'" -ErrorAction SilentlyContinue)) {
        New-ADOrganizationalUnit -Name "Finance" -Path "DC=contoso,DC=com" -ProtectedFromAccidentalDeletion $true
        Write-Host "OU Finance créée."
    } else {
        Write-Host "OU Finance existe déjà."
    }
    
  6. Créer le groupe de sécurité dédié (si besoin)
  7. # Crée le groupe s'il n'existe pas
    if (-not (Get-ADGroup -Filter "Name -eq '$delegatedGroup'" -ErrorAction SilentlyContinue)) {
        New-ADGroup -Name $delegatedGroup -GroupScope Global -Path $ouPath -Description "Gestionnaires Finance"
        Write-Host "Groupe $delegatedGroup créé."
    }
    
  8. Définir la délégation (reset pwd + création d’objets)
  9. # Délégation de réinitialisation de mot de passe
    $resetPwdRight = "Reset Password"
    $createObjRight = "Create Computer Objects"
    $rights = @($resetPwdRight,$createObjRight)
    
    foreach ($right in $rights) {
        $acl = Get-ACL "AD:$ouPath"
        $identity = New-Object System.Security.Principal.NTAccount("$delegatedGroup")
        $activeDirectoryRights = [System.DirectoryServices.ActiveDirectoryRights]::$right
        $inheritanceType = [System.Security.AccessControl.InheritanceFlags]::None
        $propagationType = [System.Security.AccessControl.PropagationFlags]::None
        $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($identity,$activeDirectoryRights,$inheritanceType,$propagationType)
        $acl.AddAccessRule($ace)
        Set-ACL -Path "AD:$ouPath" -AclObject $acl
    }
    Write-Host "Délégation appliquée au groupe $delegatedGroup."
    
  10. Vérifier la délégation
  11. # Affiche les ACE appliquées
    Get-ACL "AD:$ouPath" | Format-Table IdentityReference,ActiveDirectoryRights -AutoSize
    

🔹 Méthode alternative

Utiliser l’outil graphique Delegation of Control Wizard via dsa.msc. Cette approche est visuelle mais ne s’intègre pas dans les pipelines d’automatisation.

⚠️ Bonnes pratiques de sécurité

  • Activer ProtectedFromAccidentalDeletion sur les OU critiques.
  • Limiter les droits aux seules actions nécessaires (ex. : éviter Full Control).
  • Documenter chaque délégation dans un référentiel de configuration (Git).
  • Tester les permissions avec un compte non privilégié avant la mise en production.

✅ Conclusion

En quelques lignes de PowerShell, vous avez créé une OU, un groupe de sécurité dédié et appliqué des délégations précises. Cette méthode est réutilisable, versionnable et réduit le risque d’erreurs humaines, tout en respectant les principes du moindre privilège.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *