如果我有一个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?
答案 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 /?
。