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.
L'essentiel
- PowerShell travaille avec des objets ; deux versions : Windows PowerShell 5.1 (
powershell.exe) et PowerShell 7 (pwsh.exe). - Une cmdlet s'écrit Verbe-Nom au singulier, suivie de paramètres commençant par un tiret.
- Pour s'en sortir seul :
Get-Command,Get-Help -Examples,Get-Member. - Le pipeline
|envoie les objets d'une commande à la suivante ;$_désigne l'objet en cours. - On filtre avec
Where-Object, on choisit avecSelect-Object, on trie avecSort-Object, on compte avecMeasure-Object. - Les comparaisons s'écrivent
-eq -ne -gt -lt -like; jamais=ni>. On exporte avecExport-Csv, etFormat-*reste en dernier. - Variables en
$nom; tableau@( )numéroté dès 0 ; table de hachage@{ clé = valeur };"$($objet.Propriété)"dans un texte. if,switch,foreachetForEach-Object: condition entre parenthèses, bloc entre accolades.- Un script
.ps1se lance avec.\; ses valeurs variables sont desparam( ); la stratégie d'exécution se règle par portée (-Scope CurrentUser). - À distance :
Enable-PSRemotingsur la cible, puisEnter-PSSessionouInvoke-Command; hors domaine,TrustedHostssur 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érer | Get-Command *mot* · Get-Help cmd -Examples · cmd | Get-Member |
| Filtrer, choisir, trier | Where-Object Status -eq Running · Select-Object Name, Status · Sort-Object CPU -Descending |
| Exporter | Export-Csv f.csv -NoTypeInformation -Encoding UTF8 -Delimiter ";" |
| Services, processus | Get-Service · Restart-Service -Name X · Get-Process · Stop-Process -Name X |
| Fichiers | Get-ChildItem -Recurse · Get-Content · Set-Content · Test-Path |
| Réseau | Get-NetIPConfiguration · Test-NetConnection h -Port 443 · Resolve-DnsName |
| Scripts et distant | .\script.ps1 · Set-ExecutionPolicy RemoteSigned -Scope CurrentUser · Enter-PSSession · Invoke-Command |