skip to content

Recherche

Active Directory

Administration Active Directory avec PowerShell - utilisateurs, groupes et tâches quotidiennes !

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 ADImport-Module ActiveDirectory
✅ Vérifier moduleGet-Module ActiveDirectory
🔍 Lister cmdlets ADGet-Command -Module ActiveDirectory
📋 Aide cmdletGet-Help Get-ADUser -Examples

👥 Gestion des utilisateurs

📌 Action🧠 Commande PowerShell
📋 Lister utilisateursGet-ADUser -Filter *
🔍 Rechercher utilisateurGet-ADUser -Identity "jdupont"
👁️ Détails completsGet-ADUser "jdupont" -Properties *
🔍 Recherche par nomGet-ADUser -Filter "Name -like '*Dupont*'"
👤 Créer utilisateurNew-ADUser -Name "Jean Dupont" -SamAccountName "jdupont"
🔧 Modifier utilisateurSet-ADUser -Identity "jdupont" -Description "Admin IT"
🔒 Désactiver compteDisable-ADAccount -Identity "jdupont"
✅ Activer compteEnable-ADAccount -Identity "jdupont"
🗑️ Supprimer utilisateurRemove-ADUser -Identity "jdupont"

👥 Gestion des groupes

📌 Action🧠 Commande PowerShell
📋 Lister groupesGet-ADGroup -Filter *
🔍 Rechercher groupeGet-ADGroup -Identity "Admins"
👁️ Membres du groupeGet-ADGroupMember -Identity "Admins"
➕ Ajouter membreAdd-ADGroupMember -Identity "Admins" -Members "jdupont"
➖ Retirer membreRemove-ADGroupMember -Identity "Admins" -Members "jdupont"
👤 Groupes d’un utilisateurGet-ADUser "jdupont" -Properties MemberOf
🆕 Créer groupeNew-ADGroup -Name "IT-Team" -GroupScope Global

💻 Gestion des ordinateurs

📌 Action🧠 Commande PowerShell
📋 Lister ordinateursGet-ADComputer -Filter *
🔍 Rechercher PCGet-ADComputer -Identity "PC-001"
📊 PC avec détailsGet-ADComputer "PC-001" -Properties *
🆕 Ajouter PCNew-ADComputer -Name "PC-002" -Path "OU=Computers,DC=domain,DC=com"
🗑️ Supprimer PCRemove-ADComputer -Identity "PC-001"
⏰ Dernière connexionGet-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 OUsGet-ADOrganizationalUnit -Filter *
🆕 Créer OUNew-ADOrganizationalUnit -Name "IT" -Path "DC=domain,DC=com"
📦 Contenu d’une OUGet-ADObject -SearchBase "OU=IT,DC=domain,DC=com" -Filter *
🔄 Déplacer utilisateurMove-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 manquantInstall-WindowsFeature RSAT-AD-PowerShell
Permissions insuffisantesUtiliser un compte admin du domaine
Erreur connexion DCSpécifier -Server "dc.domain.com"
Export Excel impossibleInstaller Install-Module ImportExcel
Recherche lenteUtiliser -SearchBase "OU=..." pour limiter