PowerShell-第2章 管道
2.1 过滤列表项或命令输出项
列出所有正在运行进程名称中包含"search"的进程,对进程名字属性使用-like操作符来比较进程的Name属性
Get-Process | Where-Object {$_.Name -like "*search*"}
列出当前位置的所有子目录,使用PsIsContainer属性
Get-ChildItem | Where-Object { $_.PsIsContainer}
列出所有已经停止的服务,对服务的Status属性使用操作符-eq
Get-Service | Where-Object {$_.Status -eq "Stopped"}
对于输入的每一项,Where-Object会根据定义的脚本块对输入进行估算,脚本块返回真,就输出,否则,不输出。
一个脚本块是指用{}括起来的一系列PowerShell命令,在脚本块中可以输入任意PowerShell命令,$_代表当前输入的对象,
对于输入对象中的每一项,PowerShell将它指派给$_变量,然后运行脚本。
2.4 处理列表或命令输出的每一项
使用Foreach-Object处理列表中的每一项
1..10 | Foreach-Object {$_ * 2}
1..10是PowerShell生成数组的语法。
处理目录中的文件,在脚本块中使用$_变量作为参数
Get-ChildItem *.txt | Foreach-Object {attrib -r $_}
获得正在运行的记事本程序的进程列表,然后等待它们退出
$notepadProcess = Get-Process notepad++
$notepadProcess | Foreach-Object {$_.WaitForExit()}
会一直等待notepad++退出,如果没有退出,一直监控,一旦退出,此条命令结束。