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"

Pour aller plus loin