如何以及何时使用ErrorDetails.RecommendedAction属性?

时间:2016-01-08 11:26:08

标签: powershell error-reporting

如何以及何时使用ErrorDetails.RecommendedAction属性?它默认情况下似乎没有被使用:

using namespace System
using namespace System.Management.Automation
$exception = New-Object Exception -ArgumentList "This is the Exception message"
$errorRecord = New-Object ErrorRecord -ArgumentList $exception, "This is the ErrorRecord Message", NotSpecified, $null
$errorDetails = New-Object ErrorDetails -ArgumentList "This is the ErrorDetails message"
$errorRecord.ErrorDetails = $errorDetails
$errorDetails.RecommendedAction = "This is the recommended action"
Write-Error $errorRecord 
 : This is the ErrorDetails message
+ CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

1 个答案:

答案 0 :(得分:1)

引擎AFAIK中没有使用它。

但是,您可以将其用于自己的目的!

我现在有一个要解决的问题,由于请求的更改已经到位,因此任务可能失败,例如添加用户帐户,但该帐户已存在。

我们的编码风格要求我们发出一个(不终止的)错误,该错误与该项目已经存在时的行为类似,例如New-Item。

但是我们的上游自动化系统不应该将故障单移到队列中以采取进一步的操作-默认情况下,当发生错误时,它会这样做。

在我们的代码中,我们可以做

Write-Error 'whatever error msg' -RecommendedAction 'NoFurtherAction'

,上游客户端可以根据ErrorDetails中的此字符串来过滤故障单操作:

$Error[0].ErrorDetails.RecommendedAction -eq 'NoFurtherAction'