PowerShell 技能连载 - 用 Select-Object -First 节省时间!

Select-Object 命令有一个 -First 参数,接受一个数字值。它将只返回前 x 个元素。听起来挺简单的,而且它的确就这么简单。

以下代码从您的 Windows 文件夹中获取前 4 个 PowerShell 脚本:

从 PowerShell 3.0 开始,-First 不仅选择指定数量的结果,而且它还通知管道的上游命令,告知它操作已完成,有效地中止管道操作。

所以如果您想得到某个命令一定数量的结果,那么您总是可以使用 Select-Object -First x ——在特定的场景里这可以显著地加速您的代码执行效率。

我们假设您需要在您的用户文件夹之下的某个地方找一个名为“test.txt”的文件,并且假设只有一个这个名字的文件。而您只是不知道它放在哪个位置,那么您可以使用 Get-ChildItem-Recurse 来递归查找所有的文件夹:

Get-ChildItem -Path $home -Filter test.txt -Recurse -ErrorAction SilentlyContinue

当您执行这段代码时,Get-ChildItem 最终将找到您的文件——并且继续搜索您的文件夹树,也许要持续几分钟才能找完。因为它不知道是否有其它的文件。

所以,您知道的,如果您事先确定结果的数量,那么试试以下的代码:

Get-ChildItem -Path $home -Filter test.txt -Recurse -ErrorAction SilentlyContinue |
  Select-Object -First 1

这一次,Get-ChildItem 将会在找到一个文件后立即停止。

PowerShell 技能连载 - 用 Select-Object -First 节省时间!

http://blog.vichamp.com/2014/02/27/save-time-with-select-object-first/

作者

吴波

发布于

2014-02-27

更新于

2022-07-06

许可协议

评论