Les commandes PowerShell Windows indispensables

Écrit par

dans

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.