powershell - 如何将命令行的输出作为流逐行处理

标签 powershell

写作 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/

相关文章:

powershell - 如何从 PowerShell 调用显式实现的接口(interface)方法?

c# - "Add-Member"到一个类型,而不仅仅是 PowerShell 中该类型的对象

powershell - 奇怪的PowerShell Exec输出捕获行为

powershell - ssh-keygen: 系统找不到指定的路径

powershell - 使用 `pester` 测试 `pester` 版本

powershell - 在文件名中查找替换文本-Powershell

powershell - 删除大量文件而不会耗尽内存

powershell - 以全屏模式打开 Chrome 进程,然后稍后关闭该进程。

powershell - 指定某些高级性能级别时,Azure PowerShell Get-AzureSqlDatabaseServiceObjective 返回 null

powershell - 如何从 azure 获取性能计数器并写入 perfmon?