管道允许你像搭积木一样,将多个命令组合在一起,每一步都处理和传递对象,这不仅让脚本更简洁,还极大提升了处理数据的灵活性与效率。
本节将介绍管道 | 的基本原理、过滤的两种方式、对象属性提取,以及常见的组合技巧,帮助你写出更强大、更智能的命令行操作。
在 PowerShell 中,管道符号 |
(竖线)表示将前一个命令的输出"传递"给下一个命令作为输入。
不同于传统命令行中的文本流,PowerShell 管道中传递的是 对象,这使得操作更加精准和强大。
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object DisplayName
解释:
Get-ServiC++e
获取所有服务对象;
Where-Object
筛选出状态为 Running 的服务;
Sort-Object
根据服务名进行排序。
Where-Object { 条件表达式 }
在 {}
内部,使用 $_
表示当前管道中的每个对象。
Get-Process | Where-Object { $_.WorkingSet -gt 500MB }
Get-Service | Where-Object { $_.Name -like "Win*" }
Select-Object
用于从对象中提取你关心的字段,常用于输出简洁化、重定向文件或构建报表。
Get-Service | Select-Object Name, Status
还可以重命名字段:
Get-Service | Select-Object @{Name="服务名"; Expression={$_.DisplayName}}, Status
Sort-Object
用于按照某个属性对对象进行排序。
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, WorkingSet -First 5
Get-Service | Format-Table -Property Name, Status, DisplayName
输出到文件:
Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object Name, DisplayName | Out-File -FilePath "C:\RunningServices.txt"
Get-Process | Where-Object { $_.CPU -gt 0 } | Sort-Object CPU -Descending
Where-Object { 条件表达式 }0
Where-Object { 条件表达式 }1
PowerShell 3.0 及以上版本支持简写语法:
Where-Object { 条件表达式 }2
等同于:
Where-Object { 条件表达式 }3
建议初学者先熟悉标准写法,后期再使用简写提升效率。
命令 | 功能说明 |
---|---|
Where-Object | 对对象进行条件筛选 |
Select-Object | 提取指定属性 |
Sort-Object | 按属性排序 |
Format-Table | 美化输出为表格形式 |
Out-File | 将输出写入文本文件 |
Export-Csv | 将数据导出为 CSV 文件 |
PowerShell 管道基于 对象传递,比传统文本管道更强大
Where-Object
是数据筛选的核心工具
Select-Object
和 Sort-Object
能灵活提取、排序和组织数据
任务 1:筛选所有以 "W" 开头的服务并按名称排序
Where-Object { 条件表达式 }4
任务 2:列出前 10 个内存占用最高的进程
Where-Object { 条件表达式 }5
任务 3:导出本机所有 IPv4 地址到文件
Where-Object { 条件表达式 }6