0

我在 PowerShell 中收到以下非终止错误。我想抓住这个并写一个通用的语句,而不是看到错误。

这是输出:

您不能在空值表达式上调用方法。在 C:\PowerShell Scripts\windowsUpdates.ps1:17 char:2 + $a = $key.GetValue("LastSuccessTime") + ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], ParentContainsErrorRec ordException + FullyQualifiedErrorId : InvokeMethodOnNull

我的 catch 语句目前没有“捕捉”这个。

任何帮助表示赞赏。

4

2 回答 2

2

我想通了。我只是添加了if($variable -eq $null){write-host "message";}.

于 2013-11-13T17:38:17.730 回答
0

有几个选项

根据您从哪里获取空变量,您可以添加

-ErrorAction Stop”,以便将非终止错误视为终止错误。

如果这不是一个选项,您可以抛出错误以强制您的 catch 语句捕获错误

if($variable -eq $null){Throw("变量为空")}

或者您可以将所有错误都视为终止错误,以便您的 catch 语句将捕获任何抛出的错误

$ErrorActionPreference = "停止"

有关更多信息,请查看此处的 MSDN 文档:http: //blogs.msdn.com/b/kebab/archive/2013/06/09/an-introduction-to-error-handling-in-powershell.aspx

于 2013-12-03T16:45:51.970 回答