Cmdlets Active Directory
Le module ActiveDirectory (installé avec les RSAT ou automatiquement sur un DC) donne accès à toute la gestion AD depuis PowerShell. Plus besoin d'ouvrir "Utilisateurs et ordinateurs Active Directory" pour des tâches répétitives.
Prérequis : importer le module
# Vérifier si le module est disponible
Get-Module -ListAvailable -Name ActiveDirectory
# Importer le module
Import-Module ActiveDirectory
# Sur Windows Server (rôle ADDS installé), le module est disponible automatiquement.
# Sur un poste client : installer les RSAT depuis Paramètres > Applications > Fonctionnalités facultatives.
Gestion des utilisateurs
# Lister tous les utilisateurs AD
Get-ADUser -Filter *
# Chercher un utilisateur spécifique
Get-ADUser -Filter { Name -like "Martin*" } -Properties Department, Title
# Afficher les propriétés d'un utilisateur
Get-ADUser -Identity jmartin -Properties *
# Créer un utilisateur
New-ADUser `
-Name "Jean Martin" `
-SamAccountName "jmartin" `
-UserPrincipalName "jmartin@domaine.local" `
-Path "OU=Utilisateurs,DC=domaine,DC=local" `
-AccountPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) `
-Enabled $true `
-Department "Informatique" `
-Title "Technicien"
# Modifier un attribut
Set-ADUser -Identity jmartin -Title "Technicien Senior" -Department "DSI"
# Désactiver un compte
Disable-ADAccount -Identity jmartin
# Supprimer un utilisateur
Remove-ADUser -Identity jmartin -Confirm:$false
Gestion des groupes
# Voir les membres d'un groupe
Get-ADGroupMember -Identity "GRP_Informatique" | Select-Object Name, SamAccountName
# Ajouter un utilisateur à un groupe
Add-ADGroupMember -Identity "GRP_Informatique" -Members "jmartin"
# Retirer un utilisateur
Remove-ADGroupMember -Identity "GRP_Informatique" -Members "jmartin" -Confirm:$false
# Groupes d'un utilisateur
Get-ADPrincipalGroupMembership -Identity jmartin | Select-Object Name
Export CSV : audit des comptes
# Export de tous les utilisateurs actifs avec département et date de création
Get-ADUser -Filter { Enabled -eq $true } -Properties Department, WhenCreated, LastLogonDate |
Select-Object Name, SamAccountName, Department, WhenCreated, LastLogonDate |
Export-Csv -Path C:\Audit\utilisateurs-actifs.csv -NoTypeInformation -Encoding UTF8
Cas concret : désactiver les comptes inactifs
$dateLimit = (Get-Date).AddDays(-90)
$inactifs = Get-ADUser -Filter { LastLogonDate -lt $dateLimit -and Enabled -eq $true } `
-Properties LastLogonDate
foreach ($user in $inactifs) {
Disable-ADAccount -Identity $user
Write-Host "Désactivé : $($user.SamAccountName) : dernière connexion : $($user.LastLogonDate)"
}
Erreurs fréquentes
- Oublier
-Properties:Get-ADUserne retourne qu'un sous-ensemble de propriétés par défaut. PourDepartment,LastLogonDate,Manager, etc., il faut explicitement les demander avec-Properties Department, LastLogonDateou-Properties *. -Filter { ... }vs-Filter "...": les deux fonctionnent mais la syntaxe accolades est plus lisible et supporte les variables PowerShell ($dateLimit).- Droits insuffisants : les cmdlets AD nécessitent au minimum les droits "Account Operators" ou un compte délégué. Exécuter en tant qu'administrateur de domaine pour les opérations de création/suppression.
À retenir
Import-Module ActiveDirectoryavant toute cmdlet AD.-Properties *pour voir toutes les propriétés, mais coûteux : spécifier les propriétés nécessaires en prod.Get/New/Set/Remove-ADUser,Get/Add/Remove-ADGroupMember: les verbes restent cohérents.- Toujours tester avec
-WhatIfavant unRemoveou unDisableen masse.