Powershell 如何使用Set StrictMode忽略空引用异常?
尝试使用本机powershell方式为无法解析的变量分配空值。我的理解是,如果我设置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
设置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()
方法来避免错误,但最好的做法是不要期望运行时掩盖这些事情。