如何使用Set-StrictMode忽略空引用异常?

时间:2018-12-18 19:08:19

标签: powershell

尝试使用本机Powershell方式将空值分配给无法解析的变量。我的理解是,如果我设置Set-StrictMode -Off,我将可以执行以下操作,但失败。有没有一种方法可以告诉Powershell引擎,万一抛出异常,只需将$null赋给结果,而没有if语句就不会显示任何异常

PS C:\Users\a> $item = $string.NonExistentmember.Split("/")
You cannot call a method on a null-valued expression.
At line:1 char:1
+ $item = $string.NonExistentmember.Split("/")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

1 个答案:

答案 0 :(得分:3)

这与严格模式(无论如何默认情况下都处于关闭状态)无关。您正在寻找C#'s null conditional operator ?.之类的东西,它将使您可以

$string?.NonExistentmember?.Split("/")

(如果不幸的话)在PowerShell中存在。
(不过,其介绍已在this GitHub issue中进行了讨论。)

您可以使用注释中建议的拆分运算符(如Ansgars):

$string.NonExistentmember -split "/"

但是请注意,它们的工作原理并不完全相同(运算符使用正则表达式,方法使用char s)。