Introduction à PowerShell
PowerShell est à la fois un langage de script puissant et un environnement en ligne de commande pour les systèmes Windows. Il est construit sur le framework .NET, ce qui lui permet de manipuler des objets complexes directement en ligne de commande.
Commandes PowerShell de base
Utilisation de Get-Help
La commande Get-Help
affiche des informations sur une cmdlet (commande PowerShell). Pour obtenir de l’aide sur une commande spécifique :
Get-Help Nom-De-La-Commande
Pour voir des exemples d’utilisation concrets :
Get-Help Nom-De-La-Commande -Examples
Utilisation de Get-Command
Get-Command
permet de lister toutes les cmdlets disponibles sur le système. Elle supporte également les filtres par motif :
Get-Command Verb-*
Get-Command *-Noun
Par exemple :
Get-Command New-*
affichera toutes les cmdlets commençant par le verbe New
.
Le pipeline (|
)
Le pipeline (|
) permet de transmettre la sortie d’une commande comme entrée à une autre. Contrairement aux autres shells (comme Bash), PowerShell passe des objets, et non du texte.
Exemple :
Get-Command | Get-Member -MemberType Method
Cela permet d’examiner les méthodes disponibles sur les objets retournés par Get-Command
.
Création d’objets avec Select-Object
Pour manipuler les résultats d’une commande et ne conserver que certaines propriétés :
Get-ChildItem | Select-Object -Property Mode, Name
Filtrage des objets avec Where-Object
Pour filtrer les objets selon des critères précis :
Get-Process | Where-Object -Property CPU -GT 100
Ou en notation script block :
Get-Process | Where-Object { $_.CPU -gt 100 }
Opérateurs courants :
-Contains
: contient exactement la valeur-EQ
: égal-GT
: supérieur
Trier les objets avec Sort-Object
Pour trier la sortie d’une commande :
Get-Process | Sort-Object CPU
Quelques commandes utiles
Rechercher un fichier dans un dossier
Get-ChildItem -Path "C:\Users\Michel\Documents" -Recurse -Filter "rapport.docx"
Obtenir le répertoire de travail actuel
Get-Location
Faire une requête HTTP
Invoke-WebRequest -Uri "https://example.com"
Énumération système
Nombre d’utilisateurs locaux
Get-LocalUser
Informations détaillées sur tous les comptes utilisateur
Get-WmiObject -Class Win32_UserAccount
Obtenir l’adresse IP locale
Get-NetIPAddress
Voir les ports à l’écoute
Get-NetTCPConnection | Where-Object { $_.State -eq "Listen" }
Lister tous les processus en cours
Get-Process
Lister toutes les tâches planifiées
Get-ScheduledTask
Obtenir la liste de contrôle d’accès (ACL)
Get-Acl -Path "C:\chemin\du\dossier-ou-fichier"