我有一个从PSCmdlet
派生的自定义powershell命令,发生错误时,我想提供自己的错误消息。根据ErrorDetails
上的MSDN ErrorRecord
属性可以做到:
我如何无法使其正常运行,我有DisplayStrings.resx
,在其中我存储了ID为InvalidOrNoSite
的自定义错误消息,但是当我执行以下代码时,它显示的是旧样式错误,而不是我的自定义错误。
ErrorRecord err = new ErrorRecord(new ArgumentException(), "", ErrorCategory.InvalidArgument, this);
err.ErrorDetails = new ErrorDetails(this, "Resources.DisplayStrings.ResourceManager", "InvalidOrNoSite", null);
ThrowTerminatingError(err);
关于如何使用ErrorDetails的任何示例?
最佳答案
如果更改ErrorDetail
中的错误,则non-terminating error
的自定义有效。
微软文档中没有对此行为进行解释[或至少我没有找到它:)],但是在一年前我买的一本书(Wrox-专业Windows PowerShell编程-2008年2月)中的第97页中报道了此行为terminating error
不起作用。
我的解决方法是在true
中为catch
设置一个'flag'变量,并在测试此变量之后执行或不执行以下部分或全部代码。