管道中OutVariable的位置会产生意外的结果

时间:2019-05-20 09:41:18

标签: powershell pipeline

我不确定这是否是一个简单的陷阱,错误或其他我所缺少的东西,但是我希望下面的代码在$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的答案是我

  

排序对象需要消耗所有输入项才能开始排序,但是它   无需将它们全部写入输出。它可以尽快停止   选择对象询问。

(我目前对事物的理解)输出变量$filessort命令的输出流中获取其值,如果下一条命令要求输出流可以停止写入为此。

这个人为的示例表明$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     

0 个答案:

没有答案