使用-noexit的Powershell不会向stderr写入错误

时间:2016-02-23 02:23:23

标签: powershell

如果我有一个powershell脚本会导致错误,如果我使用-noexit,我就无法将错误写入stderr

例如,如果我有以下脚本foo.ps1

Get-Process none

如果在没有-noexit的情况下运行此错误,则会将错误写入stderr

PS E:\Play>powershell -file .\foo.ps1 2>Error1.txt

如果我使用-noexit参数,则错误不会写入stderr

PS E:\Play>powershell -noexit -file .\foo.ps1 2>Error2.txt

使用-noexit时,如何将错误写入stderr?

1 个答案:

答案 0 :(得分:1)

为什么从PowerShell提示符运行powershell?只需使用

PS E:\Play>.\foo.ps1 2>Error1.txt

或(见Understanding Streams, Redirection, and Write-Host in PowerShell

PS E:\Play>.\foo.ps1 *>&1 | Tee-Object -FilePath Error1.txt

要从cmd.exe命令提示符运行上述语句,您需要escape一些字符​​才能存入powershell(请注意所有^插入符号):

E:\Play>powershell .\foo.ps1 2^>Error1.txt

E:\Play>powershell .\foo.ps1 *^>^&1 ^| Tee-Object -FilePath Error1.txt

忽略-file切换并使用例如来自命令提示符的-NoExit,请参阅powershell /?