PowerShell 技能连载 - PowerShell 过滤器:使用 Where-Object 和 Select-Object
概述:Where-object 和 Select-object
例如,Get-Process 命令将返回有关当前运行中的 Windows 进程的各种信息,如启动时间和当前内存使用情况。每个信息都保存为 Process 对象的属性。通过管道字符 | ,PowerShell 命令也可以链接在一起。当您这样做时,在管道左侧命令的结果将发送到右侧命令中。如果您将 Get-Process 管道到 Stop-Process(即 Get-Process | Stop-Process),则由 Get-Process 命令识别出来的进程将被停止。如果没有设置筛选条件,则此操作会尝试停止系统上所有正在运行中的进程。
Where-object:语法、工作原理和示例
Where-object 命令可用于根据它们拥有任何属性来过滤对象。
1 |
PS C:\Users\dhrub> get-command Where-Object -Syntax |
最常用的语法是:
1 |
Where-Object {$_.PropertyName -ComparisonType FilterValue} |
“PropertyName”属性是您正在过滤其属性的对象的名称。ComparisonType是描述您执行比较类型的简短关键字。“eq”代表等于,“gt”代表大于,“lt”代表小于,“like”代表通配符搜索。最后,FilterValue是与对象属性进行比较的值。Get-Process命令示例如下所示,并附有输出。
1 |
PS C:\Users\dhrub> get-process| Where-Object {$_.processname -eq "armsvc"} |
Select-object: 语法、工作原理和示例
Select-Object 命令是另一个需要熟悉的命令。该命令用于限制或修改其他命令的输出。它有许多应用程序,但其中最常见的一种是选择另一个命令的前 N 个结果。
1 |
PS C:\Users\dhrub> Get-Command Select-Object -Syntax |
以下是我们可以过滤进程的一种方式。
1 |
PS C:\Users\dhrub> get-process |select Name |
以下示例显示系统中正在运行的前五个进程。
1 |
PS C:\Users\dhrub> get-process |Select-Object -First 5 |
以下示例显示系统中正在运行的最后五个进程。
1 |
PS C:\Users\dhrub> get-process |Select-Object -last 5 |