小编Kan*_*pra的帖子

将除输出流之外的两个或多个Powershell流重定向到同一文件

在Powershell中,我们可以将标准输出流与任何其他流组合,然后将结果重定向(写入)到同一文件.

例子:

Powershell -File "C:\myscript.ps1" 2>&1> "C:\log.txt"  
Powershell -File "C:\myscript.ps1" 3>&2>&1> "C:\log.txt"
Run Code Online (Sandbox Code Playgroud)

假设我在myscript.ps1中使用Write-ErrorWrite-Warning语句,我想只将错误和警告写入同一个文件.

注意:如果我没有弄错,1是输出流,2是错误流,3是警告流.

我的第一个逻辑尝试是使用3>&2> - 如果组合1和2工作,为什么不会3和2?见下文:

Powershell -File "C:\myscript.ps1" 3>&2> "C:\log.txt"
Run Code Online (Sandbox Code Playgroud)

但是,3>&2>不能作为有效的重定向运算符.

我可以尝试:

Powershell -File "C:\myscript.ps1" 3>"C:\warninglog.txt" 2>"C:\errorlog.txt"
但我真的想写同一个文件.

如果我尝试运行:

Powershell -File "C:\myscript.ps1" 3>"C:\log.txt" 2>"C:\log.txt" 
Run Code Online (Sandbox Code Playgroud)

似乎错误流(2)永远不会写入log.txt,因为文件被警告流锁定.

有没有办法将两个(或更多)输出流组合成一个流并将结果重定向到同一个文件?

powershell stream io-redirection

7
推荐指数
2
解决办法
4822
查看次数

标签 统计

io-redirection ×1

powershell ×1

stream ×1