写作 SomeCommand | { ... }
管道 SomeCommand
的整个输出到大括号中的代码。有没有办法一次“管道”一行并让大括号中的代码一行一行地处理它,而无需等待整个输出存储在内存中?
更新
[从评论复制]SomeCommand
是一个可执行文件(不是 powershell cmdlet),它在运行时会产生一些输出。它产生的行之间需要一些时间,我不想等到所有行都产生后才对每行执行一些操作
最佳答案
为了让脚本块能够访问管道,您需要在其中包含进程块:
比较两者:
1, 2, 3 | & {
process {
$_
Start-Sleep -Seconds 1
}
}
1, 2, 3 | & {
$input
Start-Sleep -Seconds 1
}
显然,
Foreach-Object
(在前面的答案中提到)通常比在这种情况下使用脚本块更好,但是由于您要求使用脚本块,因此您还应该获得脚本块...
关于powershell - 如何将命令行的输出作为流逐行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23856339/