6

我在远程会话下使用 Invoke-Expression,当抛出异常时 - 它只返回 RemoteException 而没有任何堆栈跟踪信息。例子:

try
{
    Invoke-Expression "$command 2>&1"
}    
catch
{
    Write-Host $_    
}

如果我将重定向错误排除到输出(2>&1) - 我得到了正确的错误,但它调用了不需要的调试控制台(来自 $command),它使用重定向隐藏。

Start-Process -NoNewWindow -FilePath $CmdExe -ArgumentList $Arguments

使用 Start-Process 我可以看到完整的堆栈跟踪,但也有不需要的调试控制台。

如何从远程会话下抛出的异常中获取完整的堆栈跟踪和正确的异常?谢谢。

4

1 回答 1

0

如果您正在进行远程会话,请不要使用 write-host。尝试这个:

catch { 
    Write-Error ($_ | fl * -force | out-string)
}

另一种选择是不捕获异常,让错误传播回本地会话。但我怀疑你想尝试恢复?

于 2014-06-10T19:45:37.273 回答