[玩转系统] 回到基础: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 中运行以下命令来测试集合中是否存在 Java
。
"PowerShell", "CSS", "HTML", "NodeJS" -contains "Java"
预期结果为 False
,因为如图所示,集合中不存在 Java
。
除了字符串之外,您还可以使用整数作为集合和测试值。例如,以下命令测试 3
是否存在于从 1
到 4
的整数集合中。
1,2,3,4 -contains 3
正如预期的那样,由于集合中存在 3
,因此结果应为 True
。
测试数组变量作为输入
变量是常见的、有用的并且通常是不可避免的,尤其是在脚本中。因此,PowerShell contains 运算符还可以针对变量中的元素进行测试。
例如,运行以下命令创建一个包含编程语言列表的数组,并将其存储在 $languages
变量中。
$languages = "PowerShell", "CSS", "HTML", "NodeJS"
现在,测试 PowerShell
是否作为 $languages
变量中的元素存在。
$languages -contains "PowerShell"
结果为 True
,因为 PowerShell
是数组中的值之一,如下所示。
运行以下命令来检查数组中的其他值,例如 Java
、CSS
和 HTML
。
$languages -contains "Java"
$languages -contains "CSS"
$languages -contains "HTML"
执行区分大小写的比较
默认情况下,-contains
运算符不区分大小写,这意味着该运算符对大写和小写字符的处理方式相同。例如,下面的代码片段创建一个由全部小写的水果名称组成的数组:
$fruits = "apple", "banana", "cherry"
您认为通过运行下面的代码来检查 APPLe
与集合的结果是什么?
$fruits -contains "APPLe"
结果?测试值 APPle
等于 apple
,并且 apple
存在于集合中,因此结果为 True
。
如果您不希望 PowerShell 忽略字符大小写差异怎么办?在本例中,请将 -contains
替换为 -ccontains
。与 -contains
不同,-ccontains
运算符执行区分大小写的包含比较。
像下面的命令一样,将 -contains
替换为 -ccontains
并在 PowerShell 中运行它。
$fruits -ccontains "Apple"
这次,由于区分大小写,结果为 False
。
使用 PowerShell 不包含运算符 (-notcontains
)
简单地说,-notcontains
是 -contains
的逆。因此,当值不在集合中时,-notcontains
运算符返回 True
;当值存在于集合中时,返回 $false
。
例如,假设您创建一个从 1 到 10 的数字数组,如下所示。
$numbers = 1..10
要检查数组中是否存在 4
,请运行 -contains
运算符,如下所示:
$numbers -contains 4
由于数组中存在数字 4,因此预期结果为 True
。
要检查数组中是否不存在某个值,请运行 -notcontains
运算符。
$numbers -notcontains 4
这次,结果为 False
,因为数组中存在 4
。
比较 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
),因为输入是单字符串对象并且与通配符模式匹配。
如果输入是字符串数组,如下面的命令。
$inputarray = "This is a sample string", "This is an integer"
$inputarray -like "*string"
结果将返回与模式匹配的数组成员。
作为比较,将 -like
替换为 -contains
,逻辑失败,因为 -contains
不支持通配符表达式。
"This is a sample string" -contains "*string"
总之,使用 -contains
检查数组中是否存在值,使用 -like
运算符检查字符串是否与通配符模式表达式匹配。
结论
当您需要的只是 True
或 False
结果时,PowerShell contains 运算符可帮助检查集合中值是否存在。 -contains
运算符本身似乎起的作用很小。但在脚本编写和自动化方面,它起着至关重要的作用。
但不要停止使用 PowerShell contains 运算符。通过正确使用,其他比较运算符可以补充您在本文中学到的知识,帮助您构建出色的 PowerShell 脚本!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag