Mémo de la fiche B2-16 : une page A4, à imprimer ou à enregistrer en PDF.
B2-16

PowerShell pour débutants

Ouvrir une console PowerShell, comprendre qu'une commande renvoie des objets, les filtrer et les exporter avec le pipeline, écrire un premier script de diagnostic et envoyer une commande à une machine distante.

Version en ligne
SIO1 · semestre 25 h (cours + TP)Bloc 2 – SISRMémo · Portail SIO
PowerShellobjets · Verbe-Nom Console5.1 powershell · 7 pwshVS Code pour les scripts CmdletsGet-Command · Get-HelpGet-Member · alias PipelineWhere · Select · SortMeasure · Export-Csv Langage$variable · @( ) · @{ }if · switch · foreach Administrerfichiers · servicesprocessus · réseau Scripts et distant.\script.ps1 · param( )ExecutionPolicy · WinRM

L'essentiel

  1. PowerShell travaille avec des objets ; deux versions : Windows PowerShell 5.1 (powershell.exe) et PowerShell 7 (pwsh.exe).
  2. Une cmdlet s'écrit Verbe-Nom au singulier, suivie de paramètres commençant par un tiret.
  3. Pour s'en sortir seul : Get-Command, Get-Help -Examples, Get-Member.
  4. Le pipeline | envoie les objets d'une commande à la suivante ; $_ désigne l'objet en cours.
  5. On filtre avec Where-Object, on choisit avec Select-Object, on trie avec Sort-Object, on compte avec Measure-Object.
  6. Les comparaisons s'écrivent -eq -ne -gt -lt -like ; jamais = ni >. On exporte avec Export-Csv, et Format-* reste en dernier.
  7. Variables en $nom ; tableau @( ) numéroté dès 0 ; table de hachage @{ clé = valeur } ; "$($objet.Propriété)" dans un texte.
  8. if, switch, foreach et ForEach-Object : condition entre parenthèses, bloc entre accolades.
  9. Un script .ps1 se lance avec .\ ; ses valeurs variables sont des param( ) ; la stratégie d'exécution se règle par portée (-Scope CurrentUser).
  10. À distance : Enable-PSRemoting sur la cible, puis Enter-PSSession ou Invoke-Command ; hors domaine, TrustedHosts sur le client.

Les trois réflexes de l'autonomie

Tu ne connais pas la commande : Get-Command *mot*. Tu ne sais pas l'utiliser : Get-Help commande -Examples. Tu veux savoir ce qu'elle renvoie : commande | Get-Member.

Piège classique : le signe >

Écrire Where-Object {$_.CPU > 100} ne compare rien : > redirige la sortie vers un fichier nommé « 100 » et ne filtre pas. Utilise toujours -gt, -lt, -eq.

L'ordre d'un bon pipeline

Lire (Get-) → filtrer d'abord (Where-Object) → choisir ou trier → exporter ou formater à la fin. Filtrer tôt réduit le nombre d'objets à traiter.

Lire avant de lancer

Une stratégie d'exécution n'est pas une barrière de sécurité : n'importe qui peut la contourner. Ta vraie protection est de lire un script avant de l'exécuter, surtout s'il vient d'Internet, et de ne jamais y écrire un mot de passe en clair.

Commandes clés

Pour…Commandes
Se repérerGet-Command *mot* · Get-Help cmd -Examples · cmd | Get-Member
Filtrer, choisir, trierWhere-Object Status -eq Running · Select-Object Name, Status · Sort-Object CPU -Descending
ExporterExport-Csv f.csv -NoTypeInformation -Encoding UTF8 -Delimiter ";"
Services, processusGet-Service · Restart-Service -Name X · Get-Process · Stop-Process -Name X
FichiersGet-ChildItem -Recurse · Get-Content · Set-Content · Test-Path
RéseauGet-NetIPConfiguration · Test-NetConnection h -Port 443 · Resolve-DnsName
Scripts et distant.\script.ps1 · Set-ExecutionPolicy RemoteSigned -Scope CurrentUser · Enter-PSSession · Invoke-Command