Polarys
PowerShell pour l'administration/Gestion des utilisateurs et Active Directory

Gestion des utilisateurs et Active Directory

Cmdlets Active Directory

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-ADUser ne retourne qu'un sous-ensemble de propriétés par défaut. Pour Department, LastLogonDate, Manager, etc., il faut explicitement les demander avec -Properties Department, LastLogonDate ou -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 ActiveDirectory avant 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 -WhatIf avant un Remove ou un Disable en masse.

Quiz de validation

Quiz - 2 questions

1. Pourquoi faut-il ajouter -Properties LastLogonDate à Get-ADUser ?

2. Quelle cmdlet affiche les groupes dont fait partie un utilisateur AD ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.