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

Powershell 如何使用Set StrictMode忽略空引用异常?,powershell,Powershell,尝试使用本机powershell方式为无法解析的变量分配空值。我的理解是,如果我设置设置StrictMode-Off,我将能够执行以下操作,但失败了。有没有一种方法可以告诉powershell引擎,如果抛出异常,只需将$null分配给结果,并且在没有if语句的情况下不显示任何异常 PS C:\Users\a> $item = $string.NonExistentmember.Split("/") You cannot call a method on a null-valued expr

尝试使用本机powershell方式为无法解析的变量分配空值。我的理解是,如果我设置
设置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

这与严格模式无关(默认情况下,严格模式处于关闭状态)。你在寻找更多的东西,比如

$string?.NonExistentmember?.Split("/")
如果它存在于PowerShell中,但不幸的是它不存在。
(不过,其介绍将在中讨论。)

您可以使用类似于注释中建议的Ansgars的拆分运算符:

$string.NonExistentmember -split "/"

但请注意,它们的工作原理并不完全相同(操作符使用regex,方法使用
char
s)。

um。。。否。PowerShell会将不存在的值/属性扩展为空值,但这并不意味着您可以对此类空值调用(不存在)方法。在这种特殊情况下,您可以通过使用
-split
操作符而不是
split()
方法来避免错误,但最好的做法是不要期望运行时掩盖这些事情。