我希望能够使用Sysnative cmd执行Powershell脚本并将结果输出到日志中。
当我运行(System32)时:
C:\Windows\System32\cmd.exe /C "powershell -file “C:\…\ScriptWithErrors.ps1" >> C:\…\Log.log”
我的日志将显示powershell文件中的错误(通常在终端中以红色显示)
但是,当我运行(系统的)时:
C:\Windows\Sysnative\cmd.exe /C "powershell -file “C:\…\ScriptWithErrors.ps1" >> C:\…\Log.log”
我的日志不会显示任何我未明确使用Write-Host $_.Exception
的powershell脚本错误。
是否可以执行Powershell脚本并强制输出错误输出?
此外,为什么使用cmd \C
会使回波无法正常工作?
>> C:\Windows\Sysnative\cmd.exe /C "echo time \t”
>> time /t (Output)
>> 11:20 AM (Expected output)
答案 0 :(得分:0)
Powershell将在$ Error变量中保存会话的所有错误。 最新的错误将是数组中的数字0。
因此,基本上要获取会话的所有错误,您可以最终将整个$ Error变量数组导出到日志中,或者逐一遍历并获取您感兴趣的部分。
要获取错误的行号,可以在错误变量上使用属性ScriptStackTrace。
例如,我运行:
Get-ChildItem -Path c:\cmder
Get-ChildItem -Path c:\nodirhere
第一行给我输出,第二行给我一个错误。 现在,通过选择数组中的位置0并询问我得到的scriptstacktrace,检查$ Error数组中的最新错误:
$Error[0].ScriptStackTrace
at <ScriptBlock>, <No file>: line 2