我不确定这是否是一个简单的陷阱,错误或其他我所缺少的东西,但是我希望下面的代码在$files.Count
变量中返回相同的结果。
c:\
在我的系统上包含4个文件。
gci c:\ -file -ov files | sort lastwritetime | select -first 2 | Out-Null
$files.Count # returns 4
gci c:\ -file | sort lastwritetime -ov files | select -first 2 | Out-Null
$files.Count # returns 2
在第二个示例中,管道的select -first 2
部分会影响$files
变量。
编辑 伪造给PetSerAl和JosefZ的答案是我
排序对象需要消耗所有输入项才能开始排序,但是它 无需将它们全部写入输出。它可以尽快停止 选择对象询问。
(我目前对事物的理解)输出变量$files
从sort
命令的输出流中获取其值,如果下一条命令要求输出流可以停止写入为此。
这个人为的示例表明$files
变量的内容根据后面的命令而改变
gci c:\ -file | sort -ov files | sort | select -f 1 | Out-Null;$files.count # all files
gci c:\ -file | sort -ov files | select -f 1 | Out-Null;$files.count # 1 file
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.16299.967
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.16299.967
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1