Powershell管道命令不能同时工作

时间:2016-08-08 09:06:36

标签: powershell console pipeline

运行两个与管道连接的命令

PS> cmdA | cmbB

e.g.
1) in powershell
PS> ls -Recurse | more

2) in CMD.exe
C:\> dir /s | more

你在powershell中发现cmd在cmdA完成后开始运行,这种行为与CMD.exe相比有所不同,这两个命令有望同时作为生产者 - 消费者工作。特别是当第一个消息输出很多时,你想要在第一次查看结果而不是在完成第一个cmd之后查看结果。

[2016/08/09更新] 经过几次调查,我猜问题是因为管道运营商' |'工作不同。这次我通过复制和粘贴(~50MB)创建了一个巨大的文本文件,并为CMD和Powershell使用了相同的命令行:

C:\tools\msys2\usr\bin\cat.exe .\WindowsUpdate.log | C:\tools\msys2\usr\bin\cat.exe

我使用msys2中的cat命令并避免使用`type'命令,因为它们在两个炮弹上都不同。

在CMD中,消息立即打印,但在Powershell中,我等待约30秒才能看到消息。我尝试了大约10次,得到了相同的结果。 (PS:我没有使用SSD)。但是如果在Powershell中我将接收器从'cat'对于Out-Host,它工作正常。

0 个答案:

没有答案