PowerShell 中的空变量
PowerShell 处理值为 null 的 $Null
对象,并且某些命令需要一些输出才能生成。如果有任何错误,它们会生成 null 值,并且还有助于脚本中的故障排除目的,以检查命令是否生成任何值。
本文讨论了 null 变量、在 PowerShell 中以不同语法使用 null 变量的影响以及检查 null 值的方法。
PowerShell 中的 Null 变量简介
我们可以将 NULL 视为未知或空值。例如,在你分配值或对象之前,变量为 NULL。
此变量可能很重要,因为某些命令需要一个值,如果该值为 NULL,则会生成错误。
$null
变量是 PowerShell 中用于表示 NULL 的自动变量。我们可以将它分配给变量,在比较中使用它,并将它用作集合中 NULL 的占位符。
PowerShell 将 $null
视为具有 NULL 值的对象。因此,此变量与你来自其他语言时所期望的不同。
PowerShell 中 Null 变量的影响
$null
值会根据它们出现的位置不同地影响你的代码。
对字符串的影响
如果你在字符串中使用 $null
,它将是一个空值(或空字符串)。
$value = $null
Write-Output "The value is $value."
输出:
The value is .
这个变量是我们在日志消息中使用变量时必须在变量周围放置括号的原因之一。当值位于字符串末尾时,识别变量值的边缘更为关键。
$value = $null
Write-Output "The value is [$value]"
输出:
The value is []
这个变量使空字符串和 $null
值很容易被发现。
对数值方程的影响
当在数值方程中使用 $null
变量时,如果没有给出错误,我们的结果将无效。有时 $null
变量的计算结果为 0
,而其他时候它会使整个结果为 $null
。
这是一个涉及乘法的示例,根据值的顺序给出 0
或 $null
。
$null * 5
$null -eq ( $null * 5 )
输出:
True
对集合的影响
集合允许我们使用索引来访问值。如果我们尝试索引一个空集合,我们会得到这个错误:Cannot index into a null array
。
$value = $null
$value[10]
输出:
Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
我们有一个集合,但尝试访问一个不在集合中的元素,然后你会得到一个 $null
结果。
$array = @( 'one', 'two', 'three' )
$null -eq $array[100]
输出:
True
对对象的影响
如果我们试图访问一个没有指定属性的对象的属性或子属性,我们可以得到一个 $null
变量,就像你对一个未定义的变量一样。在这种情况下,值是 $null
还是实际对象都没有关系。
$null -eq $undefined.not.existing
输出:
True
对方法的影响
在 $null
变量上调用方法将引发 RuntimeException
异常。
$value = $null
$value.toString()
输出:
You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
每当我们看到短语 You cannot call a method on a null valued expression
时,我们可以在不首先检查 $null
值的情况下寻找在变量上调用方法的位置。
在 PowerShell 中检查空值
在示例中检查 $null
值时,我们总是将 $null
变量放在左侧。
这种写作风格是有意为之,并被视为 PowerShell 最佳实践。但是,在某些情况下,将其放在右侧不会给你预期的结果。
让我们看看下面的例子,并尝试预测结果会是什么:
if ( $value -eq $null ){
'The array is $null'
}
if ( $value -ne $null ){
'The array is not $null'
}
如果我们没有定义 $value
,第一个将评估 $true
,我们的消息将是 The array is $null
。这里需要注意的是,创建一个允许两个结果都为 $false
的 $value
是可能的。
输出:
$value = @( $null )
在这种情况下,$value
变量是一个包含 $null
的数组。
-eq
运算符将检查数组中的每个值并返回匹配的 $null
(计算结果为 $false
)。 -ne
运算符将返回与 $null
值不匹配的所有内容,在这种情况下,没有结果(这也将评估为 $false
)。
因此,即使其中一个应该是,也不会是 $true
。
相关文章
使用 PowerShell 过滤文件和文件夹
发布时间:2024/02/05 浏览次数:195 分类:编程语言
-
本文将讨论 PowerShell Get-ChildItem cmdlet,我们将使用它来获取目录中的所有项目并利用其过滤器开关参数。在某些情况下,我们需要检查文件是否存在于特定位置或目录中。
从 PowerShell 中的文件名中删除路径和扩展名
发布时间:2024/02/05 浏览次数:86 分类:编程语言
-
本教程将介绍在 PowerShell 中从文件名中删除路径和扩展名的不同方法。PowerShell 支持处理系统中的各种文件操作。你可以在 PowerShell 中执行创建、复制、移动、重命名、编辑、删除和查看文件等
使用 PowerShell 连接文件
发布时间:2024/02/05 浏览次数:159 分类:编程语言
-
本教程将教你使用 PowerShell 连接文件。PowerShell 允许你执行不同的文件操作,例如创建、复制、移动、删除、查看和重命名文件。
使用 PowerShell 从路径中提取文件名
发布时间:2024/02/05 浏览次数:52 分类:编程语言
-
本教程将教你如何使用 PowerShell 从路径中提取文件名。文件路径告诉文件在系统上的位置。在 PowerShell 中处理文件时,你可能只需要从路径中获取文件名。
使用 PowerShell 从计算机存储中删除证书
发布时间:2024/02/05 浏览次数:200 分类:编程语言
-
本教程将教你使用 PowerShell 从证书存储中删除证书。在 Windows 操作系统中,证书存储在计算机本地的证书存储中。它包含不同认证机构颁发的各种证书。
在 PowerShell 中清除变量内容
发布时间:2024/02/05 浏览次数:69 分类:编程语言
-
本教程将教你在 PowerShell 中清除变量内容。变量是值的存储位置。你可以将所有类型的值存储在 PowerShell 变量中。
PowerShell 通过网络复制文件
发布时间:2024/02/05 浏览次数:162 分类:编程语言
-
本教程将教你使用 PowerShell 通过网络共享复制文件。PowerShell 是一个强大的工具,可让你从其命令行界面执行不同的文件和文件夹操作。