1. Qu’est-ce que PowerShell ?
Un shell est un programme qui prend des commandes écrites et les fait exécuter par le système. PowerShell est le shell moderne de Windows, disponible aussi sur Linux et macOS. Il est trois choses à la fois :
- une console pour taper des commandes une par une ;
- un langage de script pour enchaîner ces commandes dans un fichier réutilisable ;
- un outil d’administration capable de piloter Windows, Active Directory, des serveurs, des services en ligne.
La grande différence : les objets
L’invite de commandes (cmd.exe) et les shells Unix échangent du texte : pour exploiter un résultat, il faut découper des chaînes de caractères. PowerShell échange des objets, c’est-à-dire des données structurées avec des propriétés nommées.
PS> Get-Process -Name notepad
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
12 3,52 14,20 0,09 8124 1 notepad
Ce tableau n’est qu’un affichage. Derrière, PowerShell manipule un objet processus avec des propriétés (Id, Name, CPU, StartTime) et des actions possibles. C’est ce qui permet d’écrire directement :
PS> (Get-Process -Name notepad).Id
8124
2. Ouvrir PowerShell et se situer
Plusieurs chemins mènent à PowerShell :
- menu Démarrer, taper « PowerShell » ;
Windows + Xpuis « Terminal » ou « Windows PowerShell » ;- depuis un dossier de l’Explorateur : barre d’adresse, taper
powershellpuis Entrée.
Deux PowerShell coexistent
| Windows PowerShell 5.1 | PowerShell 7 et suivants | |
|---|---|---|
| Commande | powershell.exe | pwsh.exe |
| Installation | Intégré à Windows | À installer (Microsoft Store ou winget) |
| Usages | Modules Windows historiques, Active Directory | Multiplateforme, plus rapide, nouvelles fonctions |
| Support | Maintenance uniquement | Version activement développée |
Pour savoir où l’on se trouve :
PS> $PSVersionTable.PSVersion # version en cours
PS> $PSVersionTable.PSEdition # Desktop (5.1) ou Core (7+)
PS> Get-Location # dossier courant (alias : pwd)
PS> $env:COMPUTERNAME # nom de la machine
Suis-je administrateur ?
Certaines commandes n’agissent que dans une console lancée en tant qu’administrateur (clic droit sur l’icône → « Exécuter en tant qu’administrateur »). La barre de titre l’indique. Pour le vérifier par commande :
PS> (New-Object Security.Principal.WindowsPrincipal(
[Security.Principal.WindowsIdentity]::GetCurrent())
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
True
3. La grammaire Verbe-Nom
Presque toutes les commandes PowerShell, appelées cmdlets, suivent la forme Verbe-Nom au singulier : Get-Process, Stop-Service, New-Item, Set-Date. Cette régularité permet de deviner une commande avant même de la connaître.
| Verbe | Sens | Exemple |
|---|---|---|
Get | Lire, récupérer (sans rien modifier) | Get-Service |
Set | Modifier un élément existant | Set-Location |
New | Créer | New-Item |
Remove | Supprimer | Remove-Item |
Start / Stop | Démarrer / arrêter | Stop-Process |
Test | Vérifier, renvoyer vrai ou faux | Test-Path |
Export / Import | Vers un fichier / depuis un fichier | Export-Csv |
Get-Verb affiche la liste officielle des verbes autorisés. Les commandes en Get et Test sont sans risque : elles lisent seulement.
Les alias
Des raccourcis existent pour la frappe interactive : ls, dir et gci désignent tous Get-ChildItem ; cd désigne Set-Location.
4. Trouver une commande
Get-Command cherche parmi toutes les cmdlets disponibles. Le caractère * remplace n’importe quelle suite de caractères.
PS> Get-Command -Verb Get -Noun Service # les commandes Get-*Service*
PS> Get-Command *network* # tout ce qui contient "network"
PS> Get-Command -Module Microsoft.PowerShell.Management
Pour les commandes réseau, Windows fournit par exemple Get-NetIPAddress, Test-NetConnection ou Get-NetAdapter : tu peux les découvrir ainsi, sans moteur de recherche.
5. L’aide intégrée
C’est la compétence la plus rentable du niveau : savoir lire l’aide rend autonome.
PS> Update-Help # une fois, en administrateur
PS> Get-Help Get-Service # description et syntaxe
PS> Get-Help Get-Service -Examples # des exemples concrets
PS> Get-Help Get-Service -Full # tout le détail des paramètres
PS> Get-Help Get-Service -Online # la page web officielle
Lire une ligne de syntaxe
Get-Service [[-Name] <String[]>] [-ComputerName <String[]>] [-DependentServices]
| Notation | Signification |
|---|---|
[-Name] | Paramètre positionnel : son nom peut être omis |
<String[]> | Attend du texte ; les crochets signifient qu’on peut en donner plusieurs, séparés par des virgules |
[ ] autour du tout | Le paramètre est facultatif |
| Sans crochets | Le paramètre est obligatoire |
-DependentServices | Un commutateur : présent ou absent, il ne prend pas de valeur |
La touche Tab complète les noms de cmdlets et de paramètres : tape Get-Se puis Tab. C’est aussi une protection contre les fautes de frappe.
6. Se protéger pendant l’apprentissage
PowerShell propose deux paramètres présents sur toutes les commandes qui modifient quelque chose :
| Paramètre | Effet |
|---|---|
-WhatIf | Affiche ce que la commande ferait, sans rien faire |
-Confirm | Demande une confirmation avant chaque action |
PS> Remove-Item C:\Temp\*.log -WhatIf
WhatIf : opération « Suppression du fichier » en cours sur la cible « C:\Temp\ancien.log ».
7. Mini-projet : la fiche d’identité de la machine
8. Bilan
Exercices corrigés
À ce niveau, l’essentiel n’est pas de connaître les commandes par cœur mais de savoir les retrouver. Si tu as trouvé une autre commande que celle du corrigé et qu’elle donne le bon résultat, c’est parfait.
Exercice 0.1 — Premiers repères
Voir le corrigé
PS> $PSVersionTable.PSVersion
PS> Get-Location
PS> $env:COMPUTERNAME
PS> Get-Date
PS> Get-ChildItem $env:USERPROFILE # ou simplement : Get-ChildItem ~
PS> Clear-Host # alias : cls
Explication
Get-Date suit la règle Verbe-Nom, ce qui permettait de la deviner. ~ est un raccourci vers le dossier personnel, équivalent à $env:USERPROFILE.
Exercice 0.2 — Se débrouiller avec l’aide
Voir le corrigé
# 1.
Get-Command *service*
Get-Help Get-Service -Examples
# 2. -Recurse
Get-ChildItem C:\Windows -Recurse -Filter *.log
# 3.
Test-Path C:\Windows
True
# 4.
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
Explication
Get-Help -Examples est le raccourci le plus rentable : il donne des commandes complètes, prêtes à adapter. Le tri suivi de Select-Object -First est le motif universel du « top N ».
Pour aller plus loin
WorkingSet correspond à la mémoire physique utilisée. Il existe aussi PagedMemorySize et VirtualMemorySize : Get-Process | Get-Member les liste toutes.
Exercice 0.3 — Lire avant d’exécuter
Voir le corrigé
- Affiche les services actuellement arrêtés. Sans risque : lecture seule.
- Supprime tout le contenu du dossier Documents, sans confirmation ni corbeille. Destructeur :
-Forceet-Recursecombinés à un chemin large. - Télécharge un script depuis un site inconnu et l’exécute immédiatement en mémoire. C’est la ligne dangereuse : c’est le schéma type d’une infection.
- Teste si le port 443 du serveur de Wikipédia répond. Sans risque.
Explication
Cet exercice entraîne le réflexe le plus important du niveau : lire une commande avant de l’exécuter. Les deux premières commandes se comprennent en identifiant le verbe ; la troisième doit alerter par son schéma téléchargement + exécution.
Pour aller plus loin
Traduis systématiquement la commande en français avant de l’exécuter. Si tu n’y arrives pas, c’est précisément le signal qu’il ne faut pas l’exécuter.
Mini-projet
Voir le corrigé
$env:COMPUTERNAME
$env:USERNAME
(Get-CimInstance Win32_OperatingSystem).Caption
$PSVersionTable.PSVersion
Get-PSDrive C | Select-Object Used, Free
(Get-Service | Where-Object Status -eq "Running").Count
Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, InterfaceAlias
Explication
La fiche combine trois sources : les variables d’environnement, CIM pour le système, et les cmdlets dédiées pour les disques et le réseau. C’est déjà la structure d’un vrai script d’inventaire.
Pour aller plus loin
Au niveau 4, cette suite de commandes deviendra Get-FicheMachine.ps1, avec des paramètres et un export.
🧠 Testez vos connaissances
5 questions. Répondez puis cliquez sur « Corriger ». Rien n’est enregistré : c’est de l’auto-évaluation.
© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.