Pipes et filtrage PowerShell
L'une des fonctionnalités les plus puissantes de PowerShell est le mécanisme de "pipe".
Le pipe vous permet de combiner plusieurs commandes comme des blocs de construction, chaque étape traitant et transmettant des objets. Cela rend non seulement les scripts plus concis, mais améliore aussi grandement la flexibilité et l'efficacité du traitement des données.
Cette section présentera les|principes de base du pipe, deux méthodes de filtrage, l'extraction des propriétés d'objet et les techniques de combinaison courantes, vous aidant à écrire des opérations de ligne de commande plus puissantes et plus intelligentes.
1. Qu'est-ce qu'un pipe ?
Dans PowerShell,le symbole de pipe|(barre verticale) signifie transmettre la sortie de la commande précédente à la commande suivante comme entrée.
Contrairement aux flux de texte des lignes de commande traditionnelles, ce qui est transmis via le pipe PowerShell, ce sontdes objets,ce qui rend les opérations plus précises et plus puissantes.
Exemple : lister les services en cours d'exécution et les trier
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object DisplayName
Explication :
Get-ServiceObtenir tous les objets service ;Where-ObjectExclure les services dont le statut est Running ;Sort-ObjectTrier par nom de service.
2. Filtrage d’objets : Where-Object
Syntaxe de base
Where-Object { 条件表达式 }
Dans{}À l’intérieur, utilisez$_pour représenter chaque objet dans le pipeline actuel.
Exemple 1 : filtrer les processus avec une utilisation mémoire supérieure à 500MB
Get-Process | Where-Object { $_.WorkingSet -gt 500MB }
Exemple 2 : filtrer les services dont les noms commencent par "Win"
Get-Service | Where-Object { $_.Name -like "Win*" }
3. Extraction des propriétés : Select-Object
Select-ObjectIl est utilisé pour extraire les champs qui vous intéressent des objets, souvent pour une sortie concise, une redirection vers des fichiers ou la création de rapports.
Exemple : lister les noms et les statuts de tous les services
Get-Service | Select-Object Name, Status
Vous pouvez également renommer les champs :
Get-Service | Select-Object @{Name="服务名"; Expression={$_.DisplayName}}, Status
4. Tri des données : Sort-Object
Sort-ObjectIl est utilisé pour trier des objets selon une propriété spécifique.
Exemple 1 : Trier les processus par utilisation de la mémoire par ordre décroissant
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, WorkingSet -First 5
5. Sortie et mise en forme : Format-Table, Out-File, etc.
Exemple : Afficher les informations de service sous forme de tableau
Get-Service | Format-Table -Property Name, Status, DisplayName
Sortie vers un fichier :
Get-Service | Where-Object {$_.Status -eq "Running"} |
Select-Object Name, DisplayName |
Out-File -FilePath "C:\RunningServices.txt"
6. Combinaisons d'utilisation courantes (pratiques)
1. Afficher tous les processus consommant du CPU (triés par utilisation du CPU)
Get-Process | Where-Object { $_.CPU -gt 0 } | Sort-Object CPU -Descending
2. Rechercher tous les services dont le nom contient "Time"
Get-Service | Where-Object { $_.DisplayName -like "*Time*" }
3. Exporter les informations du disque dur
Get-CimInstance Win32_LogicalDisk |
Select-Object DeviceID, VolumeName, Size, FreeSpace |
Export-Csv -Path "C:\diskinfo.csv" -NoTypeInformation
7. Raccourci de Where-Object (PowerShell 3.0+)
PowerShell 3.0 et les versions ultérieures prennent en charge la syntaxe abrégée :
Where-Object Name -like "*Win*"
Équivalent à :
Where-Object { $_.Name -like "*Win*" }
Il est conseillé aux débutants de se familiariser d'abord avec la syntaxe standard, puis d'utiliser la syntaxe abrégée plus tard pour améliorer l'efficacité.
8. Aperçu des commandes courantes d'opérations de pipeline
| Commande | Description de la fonction |
|---|---|
Where-Object |
Filtrer les objets de manière conditionnelle |
Select-Object |
Extraire les propriétés spécifiées |
Sort-Object |
Trier par propriété |
Format-Table |
Mettre en forme la sortie sous forme de tableau |
Out-File |
Écrire la sortie dans un fichier texte |
Export-Csv |
Exporter les données vers un fichier CSV |
9. Résumé
- Les pipelines PowerShell sont basés surle passage d'objets,ce qui est plus puissant que les pipelines textuels traditionnels
Where-Objectest l'outil essentiel pour le filtrage des donnéesSelect-ObjectetSort-Objectpeut extraire, trier et organiser les données de manière flexible- Combiner plusieurs commandes permet d'accomplir des tâches complexes de traitement des données et constitue la base de l'automatisation des systèmes
10. Exercices pratiques
Tâche 1 :Filtrer tous les services commençant par "W" et les trier par nom
Get-Service | Where-Object { $_.Name -like "W*" } | Sort-Object Name
Tâche 2 :Lister les 10 processus les plus gourmands en mémoire
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, WorkingSet -First 10
Tâche 3 :Exporter toutes les adresses IPv4 locales vers un fichier
Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress | Out-File -FilePath "C:\ip_list.txt"Autres extensions