PowerShell Cheat Sheet - Commandes Essentielles
🧭 Navigation du Cours
⏮️ Chapitre Précédent: Powershell AD - Création et Modification | 🏠 Retour au Syllabus
1. 🔹 Commandes de Base PowerShell
Variables
# Créer une variable
$nomUtilisateur = "jean.dupont"
# Afficher une variable
Write-Host $nomUtilisateur
$nomUtilisateur # Version courte
# Concaténation
$nomComplet = $prenom + " " + $nom
Tableaux
# Créer un tableau
$utilisateurs = @("jean.dupont", "marie.martin", "pierre.durand")
# Accéder à un élément (index commence à 0)
$utilisateurs[0] # Premier élément
$utilisateurs[-1] # Dernier élément
# Ajouter un élément
$utilisateurs += "luc.lefevre"
Boucles
# Boucle foreach simple
foreach ($utilisateur in $utilisateurs) {
Write-Host $utilisateur.Name
}
# Avec pipeline
$utilisateurs | ForEach-Object { Write-Host $_.Name }
Conditions
# Condition simple
if ($compteActif) {
Write-Host "Compte actif"
} else {
Write-Host "Compte désactivé"
}
# Comparaisons courantes
$nombre -eq 5 # Égal
$nombre -ne 5 # Différent
$nombre -gt 5 # Supérieur
$nombre -lt 5 # Inférieur
2. 🔹 Commandes Active Directory - Utilisateurs
Recherche d'utilisateurs
# Tous les utilisateurs
Get-ADUser -Filter *
# Utilisateur spécifique
Get-ADUser -Identity "jean.dupont"
Get-ADUser -Filter {SamAccountName -eq "jean.dupont"}
# Utilisateurs avec propriétés étendues
Get-ADUser -Filter * -Properties *
# Recherche par propriétés
Get-ADUser -Filter {Department -eq "Comptabilité"}
Get-ADUser -Filter {Title -like "*Manager*"}
Get-ADUser -Filter {WhenCreated -ge "01/01/2023"}
Création et modification d'utilisateurs
# Créer un utilisateur (avec mot de passe initial)
$pwd = ConvertTo-SecureString "Azerty_1" -AsPlainText -Force
New-ADUser -Name "Marie Martin" -SamAccountName "marie.martin" `
-Path "OU=Users,OU=Comptabilite,OU=EU,DC=maxtec,DC=be" `
-AccountPassword $pwd -Enabled $true `
-ChangePasswordAtLogon $true
# Activer/Désactiver un compte
Enable-ADAccount -Identity "marie.martin"
Disable-ADAccount -Identity "marie.martin"
# Modifier les propriétés
Set-ADUser -Identity "marie.martin" -Title "Chef Comptable" -Department "Comptabilité"
# Déplacer un objet vers une autre OU
Move-ADObject -Identity "CN=Marie Martin,OU=Users,OU=Comptabilite,OU=EU,DC=maxtec,DC=be" `
-TargetPath "OU=Users,OU=RH,OU=EU,DC=maxtec,DC=be"
# Renommer un objet
Rename-ADObject -Identity "CN=Marie Martin,OU=Users,..." -NewName "Marie Dupont"
# Reset / changer le mot de passe
Set-ADAccountPassword -Identity "marie.martin" -Reset `
-NewPassword (ConvertTo-SecureString "NewPwd_2025!" -AsPlainText -Force)
# Forcer le changement à la prochaine ouverture de session
Set-ADUser -Identity "marie.martin" -ChangePasswordAtLogon $true
# Déverrouiller un compte
Unlock-ADAccount -Identity "marie.martin"
# Supprimer un utilisateur
Remove-ADUser -Identity "marie.martin" -Confirm:$false
Recherche avancée
# Utilisateurs actifs seulement
Get-ADUser -Filter {Enabled -eq $true}
# Utilisateurs avec mot de passe expiré
Get-ADUser -Filter {PasswordExpired -eq $true}
# Utilisateurs verrouillés
Get-ADUser -Filter {LockedOut -eq $true}
# Search-ADAccount : raccourcis pour les cas fréquents
Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 -UsersOnly # inactifs > 90 j
Search-ADAccount -LockedOut -UsersOnly # verrouillés
Search-ADAccount -PasswordNeverExpires -UsersOnly # mots de passe sans expiration
Search-ADAccount -AccountDisabled -UsersOnly # désactivés
3. 🔹 Commandes Active Directory - Groupes
Recherche de groupes
# Tous les groupes
Get-ADGroup -Filter *
# Groupe spécifique
Get-ADGroup -Identity "GG-EU-RH-Users"
# Groupes par type
Get-ADGroup -Filter {GroupScope -eq "Global"}
Get-ADGroup -Filter {GroupCategory -eq "Security"}
# Recherche par nom
Get-ADGroup -Filter {Name -like "GG-EU-*"}
Gestion des membres
# Ajouter un membre à un groupe
Add-ADGroupMember -Identity "GG-EU-RH-Users" -Members "marie.martin"
# Retirer un membre
Remove-ADGroupMember -Identity "GG-EU-RH-Users" -Members "marie.martin"
# Lister les membres
Get-ADGroupMember -Identity "GG-EU-RH-Users"
# Récupérer tous les groupes d'un utilisateur
Get-ADPrincipalGroupMembership -Identity "marie.martin"
4. 🔹 Commandes Active Directory - Ordinateurs
Recherche d'ordinateurs
# Tous les ordinateurs
Get-ADComputer -Filter *
# Ordinateur spécifique
Get-ADComputer -Identity "ws-compta-01"
# Ordinateurs par OS
Get-ADComputer -Filter {OperatingSystem -like "*Windows 10*"}
# Ordinateurs activés/désactivés
Get-ADComputer -Filter {Enabled -eq $true}
Gestion des ordinateurs
# Créer un compte ordinateur
New-ADComputer -Name "ws-compta-02" -Path "OU=Computers,OU=Comptabilite,OU=EU,DC=maxtec,DC=be"
# Activer/Désactiver un ordinateur
Enable-ADAccount -Identity "ws-compta-02"
Disable-ADAccount -Identity "ws-compta-02"
5. 🔹 Commandes Active Directory - Unités d'Organisation
Recherche d'OU
# Toutes les OU
Get-ADOrganizationalUnit -Filter *
# OU spécifique
Get-ADOrganizationalUnit -Identity "OU=Comptabilite,OU=EU,DC=maxtec,DC=be"
# OU avec propriétés
Get-ADOrganizationalUnit -Filter * -Properties Description, ManagedBy
Gestion des OU
# Créer une OU
New-ADOrganizationalUnit -Name "Ventes" -Path "OU=EU,DC=maxtec,DC=be"
# Modifier une OU
Set-ADOrganizationalUnit -Identity "OU=Ventes,OU=EU,DC=maxtec,DC=be" -Description "Unité organisationnelle Ventes"
6. 🔹 Commandes Pratiques - Rapports et Export
Export vers CSV
# Exporter tous les utilisateurs
Get-ADUser -Filter * -Properties Name, SamAccountName, Department, Title | Export-Csv -Path "rapport_utilisateurs.csv" -Encoding UTF8
# Exporter les membres d'un groupe
Get-ADGroupMember -Identity "GG-EU-RH-Users" | Select-Object Name, SamAccountName | Export-Csv -Path "membres_rh.csv" -Encoding UTF8
Import CSV — Onboarding en masse
# Fichier nouveaux_users.csv :
# Prenom,Nom,SamAccountName,Department,OU
# Pierre,Durand,pierre.durand,Comptabilite,"OU=Users,OU=Comptabilite,OU=EU,DC=maxtec,DC=be"
# Sophie,Leblanc,sophie.leblanc,RH,"OU=Users,OU=RH,OU=EU,DC=maxtec,DC=be"
$pwd = ConvertTo-SecureString "Azerty_1" -AsPlainText -Force
Import-Csv -Path "nouveaux_users.csv" | ForEach-Object {
New-ADUser `
-Name "$($_.Prenom) $($_.Nom)" `
-GivenName $_.Prenom -Surname $_.Nom `
-SamAccountName $_.SamAccountName `
-UserPrincipalName "$($_.SamAccountName)@maxtec.be" `
-Department $_.Department `
-Path $_.OU `
-AccountPassword $pwd -Enabled $true `
-ChangePasswordAtLogon $true
}
-WhatIf et -Confirm — l'assurance-vie du sysadmin
# -WhatIf : montre ce qui SERAIT fait, sans rien exécuter
Get-ADUser -Filter {Department -eq "RH"} | Remove-ADUser -WhatIf
# Tester un import CSV avant de l'exécuter pour de vrai
Import-Csv "nouveaux_users.csv" | ForEach-Object {
New-ADUser -Name "$($_.Prenom) $($_.Nom)" -SamAccountName $_.SamAccountName `
-Path $_.OU -WhatIf
}
# -Confirm : demande validation interactive avant chaque action
Disable-ADAccount -Identity "marie.martin" -Confirm
Remove-*, Set-* ou Move-* sur plusieurs objets se teste d'abord avec -WhatIf.
Filtres avancés
# Utilisateurs créés récemment
Get-ADUser -Filter {WhenCreated -ge (Get-Date).AddDays(-30)} -Properties WhenCreated
# Utilisateurs n'ayant pas changé leur mot de passe récemment
Get-ADUser -Filter {PasswordLastSet -le (Get-Date).AddDays(-90)} -Properties PasswordLastSet
# Groupes avec plus de 10 membres
Get-ADGroup -Filter * -Properties Members | Where-Object { $_.Members.Count -gt 10 }
7. 🔹 Commandes Système et Utilitaires
Navigation et fichiers
# Aller dans un répertoire
cd "C:\Scripts"
# Lister le contenu
Get-ChildItem
# Créer un fichier
New-Item -Path "rapport.txt" -ItemType File
# Lire un fichier
Get-Content -Path "rapport.txt"
Gestion des erreurs
# Ignorer les erreurs
Get-ADUser -Identity "utilisateur_inexistant" -ErrorAction SilentlyContinue
# Arrêter en cas d'erreur
Get-ADUser -Identity "utilisateur_inexistant" -ErrorAction Stop
# Continuer malgré les erreurs
Get-ADUser -Identity "utilisateur_inexistant" -ErrorAction Continue
8. 🔹 Raccourcis et Alias
Alias courants
# Alias de commandes
dir # = Get-ChildItem
ls # = Get-ChildItem
cat # = Get-Content
echo # = Write-Output
clear # = Clear-Host
Commandes avec alias
# Utiliser les alias
dir | Where-Object {$_.Extension -eq ".ps1"}
echo "Bonjour" | Out-File -FilePath "salutation.txt"
🚀 Conseils Pratiques
- Toujours utiliser
-Filter *pour commencer vos recherches - Utilisez
-Properties *pour voir toutes les propriétés disponibles - Testez vos commandes avec un seul objet avant de les appliquer à tous
- Sauvegardez vos scripts dans des fichiers
.ps1 - Utilisez les commentaires (
#) pour expliquer vos scripts
📚 Ressources Supplémentaires
Ce cheat sheet couvre les commandes essentielles pour démarrer avec PowerShell et Active Directory. Pour des besoins plus avancés, consultez la documentation complète.