MES TUTOS
VEILLE
Chargement de la veille...
WINDOWS / AUTOMATION

PowerShell pour SysAdmin : Automatiser la gestion Active Directory

L'interface graphique (GUI) est rassurante, mais elle n'est pas scalable. Imaginez devoir créer 50 nouveaux comptes stagiaires pour lundi matin. À la souris, c'est 2 heures de travail et des erreurs de saisie. Avec PowerShell, c'est un script de 10 lignes et 30 secondes d'exécution.

1. Prérequis : Le module Active Directory

Sur un contrôleur de domaine, le module est chargé par défaut. Sur votre PC d'administration (Windows 10/11), vous devez installer les outils RSAT (Remote Server Administration Tools).

# Vérifier si le module est disponible
Get-Module -ListAvailable ActiveDirectory

2. Les Verbes et la Syntaxe

PowerShell fonctionne sur une logique Verbe-Nom. C'est très intuitif :

La commande vitale : Get-Help

Ne mémorisez pas tout. Apprenez à chercher :

# Affiche des exemples concrets d'utilisation
Get-Help New-ADUser -Examples

3. Cas Pratique : Création d'utilisateurs en masse (Bulk)

Scénario : Les RH vous envoient un fichier nouveaux_employes.csv :

Prenom,Nom,Service
Jean,Dupont,Compta
Marie,Curie,R&D
Pierre,Martin,Marketing

Voici le script pour créer ces comptes automatiquement, les placer dans la bonne OU (Unité d'Organisation) et générer un mot de passe temporaire.

# Import du CSV
$Users = Import-Csv "C:\Temp\nouveaux_employes.csv"

# Boucle sur chaque ligne
foreach ($User in $Users) {
    
    # Création du login (ex: j.dupont)
    $SamAccountName = ($User.Prenom.Substring(0,1) + "." + $User.Nom).ToLower()
    
    # Définition du chemin LDAP (OU)
    $OU = "OU=" + $User.Service + ",DC=corp,DC=lml-info,DC=local"
    
    # Mot de passe par défaut sécurisé (Converti en SecureString)
    $Password = ConvertTo-SecureString "ChangeMe123!" -AsPlainText -Force

    try {
        New-ADUser -Name "$($User.Prenom) $($User.Nom)" `
            -GivenName $User.Prenom `
            -Surname $User.Nom `
            -SamAccountName $SamAccountName `
            -UserPrincipalName "$SamAccountName@corp.lml-info.local" `
            -Path $OU `
            -AccountPassword $Password `
            -Enabled $true `
            -ChangePasswordAtLogon $true `
            -ErrorAction Stop
            
        Write-Host "[OK] Utilisateur $SamAccountName créé." -ForegroundColor Green
    }
    catch {
        Write-Host "[ERREUR] Impossible de créer $SamAccountName : $_" -ForegroundColor Red
    }
}

4. La sécurité avant tout : -WhatIf

C'est la différence entre un amateur et un pro. Avant de lancer un script qui supprime ou modifie 1000 comptes, utilisez TOUJOURS le paramètre -WhatIf.

# Test sans risque
Remove-ADUser -Identity "j.dupont" -WhatIf

Résultat : "What if: Performing the operation 'Remove' on target 'CN=Jean Dupont,OU=Compta...'."

PowerShell vous dit ce qu'il aurait fait, sans le faire.


5. Reporting (Export CSV)

Votre patron vous demande : "Liste-moi tous les comptes désactivés du domaine". En GUI, c'est l'enfer. En PowerShell :

Get-ADUser -Filter {Enabled -eq $false} -Properties LastLogonDate | 
Select-Object Name, SamAccountName, LastLogonDate | 
Export-Csv -Path "C:\Temp\desactives.csv" -NoTypeInformation

Conclusion

PowerShell est un super-pouvoir. Il permet non seulement de gagner du temps, mais aussi d'assurer la consistance (les comptes sont toujours créés exactement de la même façon). Commencez petit, testez avec -WhatIf, et automatisez progressivement.

← Retour à la bibliothèque