将 CMD 输出流式传输到 Select-String

Stream CMD output to Select-String

有没有办法将 CMD 标准输出流式传输到 PowerShell 到 Select-String

我已经尝试了我能找到的每一种方法,但我找到的每一种方法都将信息存储在一个变量中,然后再通过管道将其使用。它必须是一个流,因为标准输出的大小可能超过 20GB,并最终在进程崩溃之前导致内存不足异常。

这是我一直在使用的命令:

gunzip.exe -c "*_2015-06-05_*" |powershell.exe "& {$input | select-string -pattern '1292681581' | Out-File C:\Users\xadministrator\desktop\test2.txt -append}"
powershell.exe "& {gunzip.exe -c '*_2015-06-05_*' | select-string ...}"

如果您发现 PowerShell 太慢,您也应该能够完全在 CMD 中执行此操作(使用 find or findstr 进行过滤):

gunzip.exe -c "*_2015-06-05_*" | find "1292681581" >> "C:\Users\xadministrator\desktop\test2.txt"

但是,无论哪种方式,处理 20 GB 的数据都需要一些时间。