我在远程会话下使用Invoke-Expression并且在抛出异常时 - 它只返回RemoteException而没有任何堆栈跟踪信息。 例如:
try
{
Invoke-Expression "$command 2>&1"
}
catch
{
Write-Host $_
}
如果我将重定向错误排除在输出(2>&1
)之外 - 我收到了正确的错误,但它调用了不需要的调试控制台(来自$ command),这是使用重定向隐藏的。
Start-Process -NoNewWindow -FilePath $CmdExe -ArgumentList $Arguments
使用Start-Process我可以看到完整的堆栈跟踪,但也有不需要的调试控制台。
如何从远程会话下的抛出异常中获取完整的堆栈跟踪和正确的异常? 感谢。
答案 0 :(得分:0)
如果您正在进行远程会话,请不要使用write-host。试试这个:
catch {
Write-Error ($_ | fl * -force | out-string)
}
另一个选项是不捕获异常,let错误传播回本地会话。但我怀疑你想要恢复?