|
|
1
48
有一个 function up on the PowerShell Team blog 名为Resolve Error,它将为您提供各种详细信息 请注意,$error是PSSession中遇到的所有错误的数组。此函数将为您提供上次遇到错误的详细信息。
|
|
|
2
20
这是自动变量
还有
|
|
|
3
19
Powershell 3.0将ScriptStackTrace属性添加到ErrorRecord对象。我使用此功能进行错误报告:
Skip参数允许我将Write Callstack或任意数量的错误处理堆栈帧保留在Get PSCallstack列表之外。 请注意,如果从catch块调用Get-PSCallstack,则会丢失抛出站点和catch块之间的任何帧。因此,我更喜欢PS3.0方法,尽管我们每帧的细节更少。 |
|
|
4
12
|
|
|
5
10
我把我在这里发现的东西作为灵感,创建了一个很好的函数,任何人都可以把它放到他们的代码中。 写入主机“未能写入日志文件`n$(解决错误)”-ForegroundColor红色
|
|
6
3
此代码:
将以以下格式回显错误:
|
|
|
7
2
|
|
|
8
2
我刚想出来。$是在catch块中捕获的异常。
|
|
|
9
1
偶然发现这一点,寻找一个内置的解决方案。我将用简单的解决方案。只需在使用任何powershell之前添加跟踪块。这将确保显示调用堆栈。下面是将在错误消息之前显示的堆栈。
|
|
|
10
1
也许我误解了什么,但我这里的问题是,我没有看到powershell脚本堆栈对内部异常的跟踪。 最后,我在$Global:Error中搜索异常的Error-Eecord对象,以检索脚本堆栈跟踪。
用法示例:
示例输出:
|
|
|
11
0
您还可以更改错误对象的默认格式,以包括堆栈跟踪。基本上,通过从$PSHOME\PowerShellCore.format.ps1xml复制System.Management.Automation.ErrorRecord的区块来创建您的格式文件,并添加您自己的 添加跟踪的元素。然后用updateformatdata加载它。关于更多细节,我刚刚写了一篇博客: https://blogs.msdn.microsoft.com/sergey_babkins_blog/2016/12/28/getting-a-stack-trace-in-powershell/ 哦,还有一件事:这不会自动传播到远程会话中。对象在远程端被格式化为字符串。对于远程会话中的堆栈跟踪,您必须将此文件上载到那里,然后在那里再次调用Update FormatData。 |
|
|
12
0
在某些情况下,PowerShell似乎不保留回溯,例如调用方法或使用
试着翻动(1)和(2)并跑步
捕获到分支(1)异常:
但是,您仍然可以在跟踪打开的情况下跟踪调用,分支(1):
|