Les commandes PowerShell Windows indispensables

PowerShell est aujourd’hui l’interface en ligne de commande recommandée par Microsoft pour l’administration, la gestion système et l’automatisation.

Comment ouvrir PowerShell sous Windows ?

Pour l’ouvrir :

  1. Appuyez sur ⊞ Win + X.
  2. Choisissez Windows PowerShell ou, mieux encore, Terminal Windows (si vous l’avez installé).
  3. Pour les droits administrateur : cliquez sur « Windows PowerShell (Admin) ».

Astuce moderne : Sur Windows 10/11, Microsoft pousse Windows Terminal comme interface unifiée. Il intègre PowerShell, CMD, WSL, Azure Cloud Shell, etc., avec onglets, thèmes et support Unicode complet. À installer via le Microsoft Store si ce n’est pas déjà fait.

PowerShell n’est pas qu’une « meilleure invite de commande » : c’est un langage de script orienté objet, intégré à .NET, conçu pour l’automatisation, la gestion à distance et l’interopérabilité.

Comment copier un dossier avec PowerShell ?

Copy-Item -Path "C:\source\mon-dossier" -Destination "C:\destination\" -Recurse
  • -Recurse : indispensable pour copier tous les sous-dossiers et fichiers.
  • Les chemins peuvent être relatifs ou absolus.
  • Si le dossier de destination n’existe pas, PowerShell le crée automatiquement (contrairement à certaines commandes anciennes).

Exemple concret

Copy-Item -Path .\projet-site -Destination D:\sauvegardes\ -Recurse

Cmdlets à connaître

Voici les commandes (plus exactement : cmdlets) à connaître absolument.

  1. Get-ComputerInfo
    Affiche des dizaines d’informations sur le système : OS, BIOS, processeur, mémoire, disques, etc.
    Remplace : systeminfo
  2. Get-NetIPConfiguration
    Donne la configuration réseau complète (IP, masque, passerelle, DNS).
    Pour renouveler l’IP :
    Restart-NetAdapter -Name « Wi-Fi »
    Remplace : ipconfig
  3. Get-ItemProperty (et registre)
    Pour gérer les associations de fichiers via le registre :
    Get-ItemProperty ‘HKCR:.txt’
    Set-ItemProperty ‘HKCR:.txt’ ‘(Default)’ ‘MonApp’
    Remplace : assoc (mais plus puissant et scriptable)
  4. Compare-Object
    Compare deux listes, fichiers ou objets :
    Compare-Object (Get-Content a.txt) (Get-Content b.txt)
    Remplace : fc — mais avec analyse sémantique et export possible (JSON, CSV…)
  5. cipher.exe (appel direct)
    PowerShell n’a pas de cmdlet native équivalente à cipher /w, donc on appelle directement l’exécutable :
    cipher /w:D:
    À encapsuler dans un script PowerShell si besoin.
  6. Repair-Volume
    Depuis PowerShell 5+, vous pouvez lancer une vérification disque :
    Repair-Volume -DriveLetter C -Scan
    Repair-Volume -DriveLetter C -OfflineScanAndFix
    Remplace : chkdsk (plus intégré, plus lisible)
  7. Get-Process & Stop-Process
  • Get-Process : liste les processus (filtrables, triables).
  • Stop-Process -Name « notepad » -Force : ferme proprement.
    Beaucoup plus puissant que tasklist/taskkill
  1. Get-NetTCPConnection
    Affiche toutes les connexions TCP actives, avec état, PID, port local/distant.
    Exemple :
    Get-NetTCPConnection | Where-Object { $_.State -eq ‘Listen’ }
    Remplace : netstat — mais avec objets manipulables
  2. powercfg.exe (toujours utilisé)
    PowerShell n’a pas encore de cmdlet native pour tout powercfg, donc on l’appelle directement :
    powercfg /batteryreport /output « C:\rapport.html »
    Mais on peut enrichir le résultat avec du parsing en PowerShell.
  3. Repair-WindowsImage
    Pour réparer l’image système (en complément de SFC) :
    Repair-WindowsImage -Online -RestoreHealth
    Complète : sfc /scannow (SFC reste utile, mais PowerShell gère aussi DISM)
  4. Stop-Computer / Restart-Computer
  • Restart-Computer -Force
  • Stop-Computer -ComputerName SRV01 (à distance !)
    Remplace largement : shutdown.exe
  1. Get-Disk, Get-Partition, Format-Volume
    Gestion complète des disques :
    Get-Disk
    Initialize-Disk -Number 1 -PartitionStyle GPT
    New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter D
    Format-Volume -DriveLetter D -FileSystem exFAT -NewFileSystemLabel « MaCle »
    Remplace entièrement : diskpart et format — en scriptable et lisible
  2. Test-NetConnection
    La cmdlet réseau tout-en-un :
  • Test-NetConnection google.com remplace ping
  • Test-NetConnection google.com -TraceRoute remplace tracert
  • Test-NetConnection google.com -Port 443 pour le test de port – Remplace : telnet
  1. Resolve-DnsName
    Interroge les serveurs DNS :
    Resolve-DnsName google.com
    Resolve-DnsName google.com -Server 8.8.8.8
    Remplace : nslookup — avec sortie objet et export JSON
  2. $PSVersionTable / [Environment]::OSVersion
    Affiche la version de PowerShell ET de Windows :
    $PSVersionTable
    [Environment]::OSVersion
    Plus riche que ver
  3. Get-Service & Start-Service
    Gestion des services Windows :
    Get-Service | Where-Object { $_.Status -eq ‘Running’ }
    Start-Service -Name « Spooler »
  4. Get-WinEvent
    Analyse des journaux système :
    Get-WinEvent -LogName System -MaxEvents 10
  5. Export-Csv / ConvertTo-Json
    Exportez n’importe quelle sortie vers des formats exploitables :
    Get-Process | Select-Object Name, CPU, WS | Export-Csv processus.csv -Encoding UTF8

Kit de survie indispensables commandes Powershell pour les tâches courantes

TâcheCommande PowerShellÉquivalent ancien
Infos systèmeGet-ComputerInfosysteminfo
IP & réseauGet-NetIPConfigurationipconfig
Renouveler IP Wi-FiRestart-NetAdapter -Name "Wi-Fi"ipconfig /renew
Comparer deux fichiersCompare-Object (Get-Content a.txt) (Get-Content b.txt)fc
Lister processusGet-Processtasklist
Tuer un processusStop-Process -Name "notepad"taskkill
Tester une connexionTest-NetConnection google.com -Port 443telnet ou ping
Résoudre un nom DNSResolve-DnsName google.comnslookup
Gérer les disquesGet-Disk, Format-Volume, etc.diskpart
Redémarrer à distanceRestart-Computer -ComputerName SRV01shutdown /r /m \\SRV01
Exporter des données`Get-ProcessExport-Csv -Encoding UTF8`

Pourquoi PowerShell plutôt que CMD ou Git Bash ?

  • Objets, pas du texte : chaque commande retourne des objets manipulables (pas juste des chaînes de caractères).
  • Intégration .NET : accès direct aux bibliothèques Windows.
  • Scriptable et automatisable : idéal pour les workflows de sauvegarde, déploiement, ou documentation (très utile en digital humanities ou en UX-SEO).
  • Unicode natif : vous pouvez manipuler plusieurs langues sans corruption d’encodage.

Équivalents PowerShell des commandes POSIX essentielles

Commande Bash / POSIXFonctionÉquivalent PowerShellRemarques
pwdAfficher le dossier courantGet-Location ou pwdpwd fonctionne aussi (alias de Get-Location)
ls ou ls -laLister les fichiersGet-ChildItem ou ls / dirls et dir sont des alias. Pour les fichiers cachés : Get-ChildItem -Force
cd cheminSe déplacer dans un dossierSet-Location chemin ou cd chemincd est un alias → fonctionne comme sous Bash
cd ou cd ~Aller dans le dossier personnelcd ~Fonctionne ! ~ est reconnu comme $HOME
cd ..Remonter d’un dossiercd ..Identique → fonctionne
mkdir nomCréer un dossierNew-Item -ItemType Directory -Name nom ou mkdir nommkdir est un alias → utilisable tel quel
cp source destCopier un fichierCopy-Item source dest ou cp source destcp est un alias → mais attention : pas de -r
cp -r dossier/ dest/Copier un dossier récursifCopy-Item -Recurse dossier destOption -Recurse obligatoire (pas d’option -r)
mv source destDéplacer ou renommerMove-Item source dest ou mv source destmv est un alias → fonctionne
rm fichierSupprimer un fichierRemove-Item fichier ou rm fichierrm est un alias
rm -rf dossier/Supprimer un dossier récursifRemove-Item -Recurse -Force dossierPas de -rf → utiliser -Recurse -Force
  1. Les alias existent, mais cachent des différences :
    Même si ls, cd, cp fonctionnent en PowerShell, leur comportement n’est pas identique à Bash (ex. : cp -r → n’existe pas ; il faut -Recurse).
  2. Pas de support natif pour les outils Unix classiques :
    Pas de grep, sed, awk, jq, rsync → sauf si installés via WSL, Git Bash ou MSYS2.
  3. Encodage et Unicode :
    PowerShell a longtemps eu des problèmes avec UTF-8 (surtout pour les caractères comme ⵜ, ع, או). Même en 2025, Linux/macOS restent plus fiables pour les langues non latines.
  4. Non portable :
    Un script PowerShell ne fonctionne pas sur Linux/macOS sans adaptation. Un script Bash (POSIX) fonctionne partout si l’environnement est conforme.