我有一个从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'变量,并在测试此变量之后执行或不执行以下部分或全部代码。

10-08 18:01