Active Directory est le service d’annuaire Microsoft permettant la gestion centralisée des utilisateurs, ordinateurs et ressources dans un environnement Windows Server.
📦 Préparation du module
📌 Action | 🧠 Commande PowerShell |
---|---|
📦 Importer module AD | Import-Module ActiveDirectory |
✅ Vérifier module | Get-Module ActiveDirectory |
🔍 Lister cmdlets AD | Get-Command -Module ActiveDirectory |
📋 Aide cmdlet | Get-Help Get-ADUser -Examples |
👥 Gestion des utilisateurs
📌 Action | 🧠 Commande PowerShell |
---|---|
📋 Lister utilisateurs | Get-ADUser -Filter * |
🔍 Rechercher utilisateur | Get-ADUser -Identity "jdupont" |
👁️ Détails complets | Get-ADUser "jdupont" -Properties * |
🔍 Recherche par nom | Get-ADUser -Filter "Name -like '*Dupont*'" |
👤 Créer utilisateur | New-ADUser -Name "Jean Dupont" -SamAccountName "jdupont" |
🔧 Modifier utilisateur | Set-ADUser -Identity "jdupont" -Description "Admin IT" |
🔒 Désactiver compte | Disable-ADAccount -Identity "jdupont" |
✅ Activer compte | Enable-ADAccount -Identity "jdupont" |
🗑️ Supprimer utilisateur | Remove-ADUser -Identity "jdupont" |
👥 Gestion des groupes
📌 Action | 🧠 Commande PowerShell |
---|---|
📋 Lister groupes | Get-ADGroup -Filter * |
🔍 Rechercher groupe | Get-ADGroup -Identity "Admins" |
👁️ Membres du groupe | Get-ADGroupMember -Identity "Admins" |
➕ Ajouter membre | Add-ADGroupMember -Identity "Admins" -Members "jdupont" |
➖ Retirer membre | Remove-ADGroupMember -Identity "Admins" -Members "jdupont" |
👤 Groupes d’un utilisateur | Get-ADUser "jdupont" -Properties MemberOf |
🆕 Créer groupe | New-ADGroup -Name "IT-Team" -GroupScope Global |
💻 Gestion des ordinateurs
📌 Action | 🧠 Commande PowerShell |
---|---|
📋 Lister ordinateurs | Get-ADComputer -Filter * |
🔍 Rechercher PC | Get-ADComputer -Identity "PC-001" |
📊 PC avec détails | Get-ADComputer "PC-001" -Properties * |
🆕 Ajouter PC | New-ADComputer -Name "PC-002" -Path "OU=Computers,DC=domain,DC=com" |
🗑️ Supprimer PC | Remove-ADComputer -Identity "PC-001" |
⏰ Dernière connexion | Get-ADComputer -Filter * -Properties LastLogonDate |
🔍 Recherches avancées
🎯 Utilisateurs inactifs
# Utilisateurs non connectés depuis 90 jours
$date = (Get-Date).AddDays(-90)
Get-ADUser -Filter * -Properties LastLogonDate | Where-Object {$_.LastLogonDate -lt $date}
🔒 Comptes désactivés
Get-ADUser -Filter {Enabled -eq $false}
👥 Utilisateurs d’un groupe spécifique
Get-ADGroupMember -Identity "Domain Admins" | Get-ADUser -Properties DisplayName
🏢 Structure organisationnelle (OU)
📌 Action | 🧠 Commande PowerShell |
---|---|
📋 Lister OUs | Get-ADOrganizationalUnit -Filter * |
🆕 Créer OU | New-ADOrganizationalUnit -Name "IT" -Path "DC=domain,DC=com" |
📦 Contenu d’une OU | Get-ADObject -SearchBase "OU=IT,DC=domain,DC=com" -Filter * |
🔄 Déplacer utilisateur | Move-ADObject -Identity "CN=jdupont,..." -TargetPath "OU=IT,..." |
🛠️ Exemples de scripts
📊 Script d’export d’un groupe avec ses membres vers Excel :
# Définir le nom du groupe à analyser
$groupName = "GRP-compta"
# Récupérer le groupe et ses membres du domaine
$group = Get-ADGroup -Identity $groupName -Properties Members
# Pour chaque membre du groupe, récupérer les détails complets
$members = $group.Members | ForEach-Object {
# Get-ADObject permet d'obtenir tous types d'objets AD (users, computers, etc.)
Get-ADObject -Identity $_ -Properties *
}
# Afficher un aperçu des membres dans la console
$members | Format-Table Name, ObjectClass, DistinguishedName
# Construire le nom du fichier avec date du jour
$excelFilePath = "C:\dossier\export_$($groupName)_$(Get-Date -Format 'yyyyMMdd').xlsx"
# Exporter vers Excel (nécessite le module ImportExcel)
$members | Select-Object Name, ObjectClass, DistinguishedName |
Export-Excel -Path $excelFilePath -AutoSize
Write-Host "Export terminé : '$excelFilePath'"
🔍 Audit des comptes utilisateur
# Rapport utilisateurs avec infos essentielles
Get-ADUser -Filter * -Properties DisplayName, LastLogonDate, PasswordLastSet |
Select-Object Name, DisplayName, Enabled, LastLogonDate, PasswordLastSet |
Export-Csv "C:\temp\users_audit.csv" -NoTypeInformation
👥 Rapport des groupes et membres
# Liste tous les groupes avec nombre de membres
Get-ADGroup -Filter * | ForEach-Object {
$memberCount = (Get-ADGroupMember -Identity $_ -ErrorAction SilentlyContinue).Count
[PSCustomObject]@{
GroupName = $_.Name
MemberCount = $memberCount
GroupScope = $_.GroupScope
}
} | Sort-Object MemberCount -Descending
🔒 Comptes à problème
# Comptes expirés ou verrouillés
Get-ADUser -Filter * -Properties LockedOut, PasswordExpired, AccountExpirationDate |
Where-Object {$_.LockedOut -eq $true -or $_.PasswordExpired -eq $true} |
Select-Object Name, LockedOut, PasswordExpired, AccountExpirationDate
📈 Monitoring et rapports
📊 Statistiques du domaine
# Vue d'ensemble du domaine
Write-Host "=== Statistiques Active Directory ===" -ForegroundColor Green
Write-Host "Utilisateurs total: $((Get-ADUser -Filter *).Count)"
Write-Host "Groupes total: $((Get-ADGroup -Filter *).Count)"
Write-Host "Ordinateurs total: $((Get-ADComputer -Filter *).Count)"
Write-Host "OUs total: $((Get-ADOrganizationalUnit -Filter *).Count)"
⚠️ Alertes de sécurité
# Utilisateurs avec mot de passe n'expirant jamais
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpires |
Select-Object Name, PasswordNeverExpires
🚨 Dépannage courant
🆘 Problème | 🧠 Solution |
---|---|
Module AD manquant | Install-WindowsFeature RSAT-AD-PowerShell |
Permissions insuffisantes | Utiliser un compte admin du domaine |
Erreur connexion DC | Spécifier -Server "dc.domain.com" |
Export Excel impossible | Installer Install-Module ImportExcel |
Recherche lente | Utiliser -SearchBase "OU=..." pour limiter |