当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 回到基础:PowerShell 包含运算符

作者:精品下载站 日期:2024-12-14 13:11:25 浏览:14 分类:玩电脑

回到基础:PowerShell 包含运算符


随着越来越多的信息可用,找到您想要的东西变得越来越困难。当您需要的只是确定集合中是否存在某个值时,在这种情况下,PowerShell Contains Operator (-contains) 可以帮助完成此任务。

在这篇文章中,您将学习如何在确定值是否存在时使用 PowerShell contains 运算符。您还会发现它的逆操作符,即 -notcontains 运算符。

先决条件

本教程将是一个实践演示。如果您想继续操作,请确保您拥有 Windows PowerShell 5.1 或 PowerShell 7+。本教程使用v7.2.6。

使用 PowerShell Contains 运算符 (-contains)

PowerShell Contains 运算符是包含运算符之一。该运算符确定给定集合中是否存在某个值。结果不显示匹配值。相反,它返回一个布尔值 (True/False),指示测试值是否存在。

-contains 的语法如下:

<Collection> -Contains <Test-Value>
  • 表示用于比较的对象集。该集合位于 -contains 运算符之前,可以是文字值或包含该集合的变量。
  • 是检查集合中是否存在的值。该值应位于 -contains 运算符之后(右侧),并且可以是文字值、值的集合或变量。

如何应用 PowerShell contains 运算符?您将在接下来的部分中了解它们。

测试作为输入的值集合

您可以使用 -contains 运算符直接将测试对象与值集合(例如字符串集合)进行比较。当您有一个项目列表并想知道列表中是否有特定项目时,此方法非常有用。

以下示例显示了 PowerShell Contains 运算符的实际操作,用于检查集合中是否存在某个值:

"PowerShell", "CSS", "HTML", "NodeJS" -contains "PowerShell"

请注意,集合中的每个值均以逗号分隔,并将每个元素括在引号中。 -Contains 运算符检查测试值是否存在或等于集合中的元素。

在本例中,该命令返回 True,因为集合中存在 PowerShell,如下所示。

[玩转系统] 回到基础:PowerShell 包含运算符

现在,在 PowerShell 中运行以下命令来测试集合中是否存在 Java

"PowerShell", "CSS", "HTML", "NodeJS" -contains "Java"

预期结果为 False,因为如图所示,集合中不存在 Java

[玩转系统] 回到基础:PowerShell 包含运算符

除了字符串之外,您还可以使用整数作为集合和测试值。例如,以下命令测试 3 是否存在于从 14 的整数集合中。

1,2,3,4 -contains 3

正如预期的那样,由于集合中存在 3,因此结果应为 True

[玩转系统] 回到基础:PowerShell 包含运算符

测试数组变量作为输入

变量是常见的、有用的并且通常是不可避免的,尤其是在脚本中。因此,PowerShell contains 运算符还可以针对变量中的元素进行测试。

例如,运行以下命令创建一个包含编程语言列表的数组,并将其存储在 $languages 变量中。

$languages = "PowerShell", "CSS", "HTML", "NodeJS"

现在,测试 PowerShell 是否作为 $languages 变量中的元素存在。

$languages -contains "PowerShell"

结果为 True,因为 PowerShell 是数组中的值之一,如下所示。

[玩转系统] 回到基础:PowerShell 包含运算符

运行以下命令来检查数组中的其他值,例如 JavaCSSHTML

$languages -contains "Java"
$languages -contains "CSS"
$languages -contains "HTML"

[玩转系统] 回到基础:PowerShell 包含运算符

执行区分大小写的比较

默认情况下,-contains 运算符不区分大小写,这意味着该运算符对大写和小写字符的处理方式相同。例如,下面的代码片段创建一个由全部小写的水果名称组成的数组:

$fruits = "apple", "banana", "cherry"

您认为通过运行下面的代码来检查 APPLe 与集合的结果是什么?

$fruits -contains "APPLe"

结果?测试值 APPle 等于 apple,并且 apple 存在于集合中,因此结果为 True

[玩转系统] 回到基础:PowerShell 包含运算符

如果您不希望 PowerShell 忽略字符大小写差异怎么办?在本例中,请将 -contains 替换为 -ccontains。与 -contains 不同,-ccontains 运算符执行区分大小写的包含比较。

像下面的命令一样,将 -contains 替换为 -ccontains 并在 PowerShell 中运行它。

$fruits -ccontains "Apple"

这次,由于区分大小写,结果为 False

[玩转系统] 回到基础:PowerShell 包含运算符

使用 PowerShell 不包含运算符 (-notcontains)

简单地说,-notcontains-contains 的逆。因此,当值不在集合中时,-notcontains 运算符返回 True;当值存在于集合中时,返回 $false

例如,假设您创建一个从 1 到 10 的数字数组,如下所示。

$numbers = 1..10

要检查数组中是否存在 4,请运行 -contains 运算符,如下所示:

$numbers -contains 4

由于数组中存在数字 4,因此预期结果为 True

[玩转系统] 回到基础:PowerShell 包含运算符

要检查数组中是否不存在某个值,请运行 -notcontains 运算符。

$numbers -notcontains 4

这次,结果为 False,因为数组中存在 4

[玩转系统] 回到基础:PowerShell 包含运算符

比较 PowerShell Contains 运算符与 Like 运算符

-contains 运算符和 -like 运算符都是 PowerShell 比较运算符。但 -like 不是包含运算符,而是匹配运算符。

-like 运算符将通配符表达式与字符串或字符串数组进行匹配。相反,-contains 运算符不像 -like 那样使用通配符。

如果输入是数组,-like 返回与模式匹配的数组成员。但如果输入是标量或单个字符串对象,则结果是布尔值。下面的代码片段显示了-like 运算符语法。

<string[]> -like <wildcard-expression> # output is the matching item.
<string> -like <wildcard-expression> # output is Boolean (True/False).

例如,运行以下命令将模式 *string 与单个字符串输入进行匹配。

"This is a sample string" -like "*string"

如您所见,结果是布尔值 (True),因为输入是单字符串对象并且与通配符模式匹配。

[玩转系统] 回到基础:PowerShell 包含运算符

如果输入是字符串数组,如下面的命令。

$inputarray = "This is a sample string", "This is an integer"
$inputarray -like "*string"

结果将返回与模式匹配的数组成员。

[玩转系统] 回到基础:PowerShell 包含运算符

作为比较,将 -like 替换为 -contains,逻辑失败,因为 -contains 不支持通配符表达式。

"This is a sample string" -contains "*string"

[玩转系统] 回到基础:PowerShell 包含运算符

总之,使用 -contains 检查数组中是否存在值,使用 -like 运算符检查字符串是否与通配符模式表达式匹配。

结论

当您需要的只是 TrueFalse 结果时,PowerShell contains 运算符可帮助检查集合中值是否存在。 -contains 运算符本身似乎起的作用很小。但在脚本编写和自动化方面,它起着至关重要的作用。

但不要停止使用 PowerShell contains 运算符。通过正确使用,其他比较运算符可以补充您在本文中学到的知识,帮助您构建出色的 PowerShell 脚本!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯