PowerShell 技能连载 - 增强错误记录的可读性
当 PowerShell 遇到错误时,它将抛出包含关于该错误详细信息的错误记录。不幸的是,这些对象有点儿难懂,而且缺省情况下不会显示所有信息。相比之下,以下函数有着无价的帮助信息:
1 | function ConvertFrom-ErrorRecord |
您可以在 $error
中辨认出收集到的错误信息:
1 | PS C:\> $Error | ConvertFrom-ErrorRecord | Out-GridView |
您也可以在 try..catch
代码快中使用它:
1 | try |
结果类似这样:
Exception : Cannot find any service with service name 'foo'.
Reason : ServiceCommandException
Target : foo
Script :
Line : 5
Column : 3
您甚至可以用 -ErrorVariable
通用参数来收集一个 cmdlet 运行时发生的所有错误记录:
1 | $r = Get-ChildItem -Path $env:windir -Filter *.ps1 -Recurse -ErrorAction SilentlyContinue -ErrorVariable test |
相同地,结果类似这样:
Exception : Access to the path 'C:\Windows\AppCompat\Appraiser\Telemetry' is
denied.
Reason : UnauthorizedAccessException
Target : C:\Windows\AppCompat\Appraiser\Telemetry
Script :
Line : 3
Column : 6
Exception : Access to the path 'C:\Windows\AppCompat\Programs' is denied.
Reason : UnauthorizedAccessException
Target : C:\Windows\AppCompat\Programs
Script :
Line : 3
Column : 6
Exception : Access to the path 'C:\Windows\CSC\v2.0.6' is denied.
Reason : UnauthorizedAccessException
Target : C:\Windows\CSC\v2.0.6
Script :
Line : 3
Column : 6
...
PowerShell 技能连载 - 增强错误记录的可读性
http://blog.vichamp.com/2018/11/23/making-error-records-more-readable/