PowerShell 技能连载 - 跳出管道
如果您事先知道期望从管道中得到多少个对象,您可以用 Select-Object
命令来停止上游的 cmdlet 执行。这样可以节约很多时间。
这个例子试着在 Windows 文件夹中查找 explorer.exe 的第一个实例。由于 Select-Object
语句的作用,一旦找到第一个实例,管道就结束了。如果没有这个语句,即便已经查找到所需的数据,Get-ChildItem
也会不断地递归扫描 Windows 文件夹。
#requires -Version 3
Get-ChildItem -Path c:\Windows -Recurse -Filter explorer.exe -ErrorAction SilentlyContinue |
Select-Object -First 1
请注意只有在 PowerShell 3.0 以上版本中,Select-Object
才具有中断上游 cmdlet 的能力。在早期的版本中,您仍然会获得前 x 个元素,但是上游的 cmdlet 会得不到“已经获得足够的数据”通知而一直持续执行。
PowerShell 技能连载 - 跳出管道