Tutoriels gratuits et ouverts à toutes et à tous · conçus au Lycée Chevrollier — AngersÀ propos

Série « Parcours PowerShell » · partie 1 / 8

PowerShell niveau 0 — Découvrir la console

Comprendre ce qu’est PowerShell, l’ouvrir, poser une question à l’aide intégrée : niveau 0 du parcours PowerShell, avec exercices corrigés et QCM.

Systèmes✎ B. Jousseaume📅 17 octobre 2026⏱ 2 à 3 h📶 Débutant

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 + X puis « Terminal » ou « Windows PowerShell » ;
  • depuis un dossier de l’Explorateur : barre d’adresse, taper powershell puis Entrée.

Deux PowerShell coexistent

Windows PowerShell 5.1PowerShell 7 et suivants
Commandepowershell.exepwsh.exe
InstallationIntégré à WindowsÀ installer (Microsoft Store ou winget)
UsagesModules Windows historiques, Active DirectoryMultiplateforme, plus rapide, nouvelles fonctions
SupportMaintenance uniquementVersion 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.

VerbeSensExemple
GetLire, récupérer (sans rien modifier)Get-Service
SetModifier un élément existantSet-Location
NewCréerNew-Item
RemoveSupprimerRemove-Item
Start / StopDémarrer / arrêterStop-Process
TestVérifier, renvoyer vrai ou fauxTest-Path
Export / ImportVers un fichier / depuis un fichierExport-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]
NotationSignification
[-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 toutLe paramètre est facultatif
Sans crochetsLe paramètre est obligatoire
-DependentServicesUn 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ètreEffet
-WhatIfAffiche ce que la commande ferait, sans rien faire
-ConfirmDemande 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é
  1. Affiche les services actuellement arrêtés. Sans risque : lecture seule.
  2. Supprime tout le contenu du dossier Documents, sans confirmation ni corbeille. Destructeur : -Force et -Recurse combinés à un chemin large.
  3. 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.
  4. 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.

1. Qu’est-ce qui distingue principalement PowerShell de l’invite de commandes ?

💬 C’est ce qui permet d’écrire directement (Get-Process).Id sans découper de chaînes de caractères.

2. Quelle forme suivent presque toutes les cmdlets ?

💬 Get-Service, Stop-Process, New-Item : cette régularité permet de deviner une commande inconnue.

3. Que fait Get-Help Get-Service -Examples ?

💬 C’est le réflexe le plus rentable pour apprendre une commande. Update-Help télécharge l’aide complète.

4. À quoi sert le paramètre -WhatIf ?

💬 -Confirm, lui, demande une confirmation. Les deux se combinent avec les commandes qui modifient quelque chose.

5. Un site affiche un CAPTCHA demandant de coller une commande PowerShell. Que faire ?

💬 Aucun site légitime ne demande d’exécuter une commande. C’est une attaque qui fait exécuter le code malveillant par la victime elle-même.

© 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.

Pour aller plus loin

Bastion Guacamole : dépanner les connexions RDP

Une démarche méthodique pour diagnostiquer une connexion RDP qui échoue à travers le bastion : journal de guacd, tableau de diagnostic, NLA et NTLM, réseau, fiche de suivi d’incident.

Avancé⏱ 1 h 30 · 8 octobre 2026