[玩转系统] PowerShell 在哪里 |了解Where-Object 命令如何工作?
作者:精品下载站 日期:2024-12-14 04:51:34 浏览:17 分类:玩电脑
PowerShell 在哪里 |了解Where-Object 命令如何工作?
PowerShell 简介,其中
PowerShellWhere-Object cmdlet(别名:where)根据使用管道传递给对象的值来选择或过滤掉对象的特定属性,例如使用名称或用途过滤掉特定进程或过滤掉服务该Where-Object从PowerShell管道获取输入并对其进行处理,它使用比较运算符以及属性值,并且它可以与ScriptBlock或基于比较语句一起使用。
句法
Where-Object 命令的语法。
语法1:
Where-Object
[-InputObject <PSObject>]
[-Property] <String>
[[-Value] <Object>]
[-Comparision Operator]
[<CommonParameters>]
这里的比较运算符是,
EQGT
MATCH总资产负债表
CEQLT
CNE交联层析法
GE通用电气工程师协会
LE化学发光法
Like克莱克
NotLike不喜欢
CmatchNotMatch
CNotMatch包含
CContainsNotContains
CNotContains在
CInNotIn
CNotIn是
IsNot不是
语法2:
Where-Object
[-InputObject <PSObject>]
[-FilterScript] <ScriptBlock>
[<CommonParameters>]
两种语法的通用参数。
Debug (db)输出变量 (ov)
ErrorAction (ea)输出缓冲区(ob)
ErrorVariable (ev)管道变量 (pv)
InformationAction (infa)冗长 (vb)
InformationVariable (iv)警告操作 (wa)
警告变量 (wv)
Where-Object 命令在 PowerShell 中如何工作?
PowerShell 中的Where-Object cmdlet 从管道获取输入,并作用于输入对象属性。输入对象可以是由方法和属性组成的对象,也可以是数组。使用 where-object cmdlet 后,它会使用对象的属性以及比较运算符来进行过滤。
有两种方法可以构造Where-Object 命令。
1. 脚本块
在此方法中,我们使用属性名称、比较运算符或逻辑运算符以及属性值来从对象中过滤出数据。 Where-Object 返回特定脚本块语句为 true 的所有对象。
例如,
Get-Process | Where-Object {$_.Name -eq "Chrome"}
2. 比较说明
此功能是在 PowerShell 3.0 中引入的,在此之前,只有 scriptblock 方法。此方法使用自然语言通过提供属性值来过滤对象。
例如,
Get-Process | Where-Object -Property "Name" -EQ -Value "Chrome"
当仅提供属性名称而不提供值时,它将Where-Object 视为布尔表达式。例如,
('Hello','','PowerShell') | Where-Object Length
更多示例将在示例部分中看到。
我们还可以使用‘?’符号来代替Where-Object命令。例如,
Get-Service | ?{$_.StartType -eq 'Disabled'}
我们在Where-Object命令中提供的值不区分大小写,但可以使用以“C”开头的几个运算符(ceq、clike、Ccontains等)来区分大小写。
示例
以下是下面提到的示例
示例 #1 - 使用 -EQ 运算符。
在此示例中,Where-Object 使用 -EQ 运算符来获取处于禁用状态的服务的启动类型。
Get-Service | where{$_.StartType -eq 'Disabled'}
或者
Get-Service | Where-Object -Property Starttype -EQ -Value Disabled
输出:
示例 #2 - 使用多个比较运算符和逻辑运算符。
我们可以组合多个比较运算符和逻辑运算符,以使用Where-Object命令过滤结果。例如,
Get-Service | Where{($_.StartType -eq 'Manual') -and ($_.Status -eq 'Running')} | Select Name, Starttype, Status
输出:
示例 #3 - 使用通配符。
我们可以将通配符与 Like 运算符一起使用来获得类似的结果。例如,
获取以“P”开头的服务名称。
Get-Service | where{$_.Name -like 'P*'}
输出:
服务名称以“A”结尾。
Get-Service | where{$_.Name -like '*A'}
输出:
包含“日志”的服务名称。
Get-Service | where{$_.Name -like '*Log*'}
输出:
示例 #4 - 区分大小写。
PowerShell 及其命令不区分大小写,但可以使用一些比较运算符使其区分大小写,并且它们以“C”开头。
Get-Service | where{$_.Name -ceq 'Netlogon'}
上面的命令给出了输出,但因为 Netlogon 与服务名称完全匹配,但由于 -CEQ 运算符的名称区分大小写,下面的命令不会生成输出。
Get-Service | where{$_.Name -ceq 'netlogon'}
输出:
示例 #5 - 使用 Length 过滤数组。
考虑我们有以下数组并过滤非空输出,我们可以使用以下命令。
"John","","Alex","" | Where-Object Length -gt 0
输出:
同样,您也可以过滤文件。
示例 #6 - 使用(大于、小于)运算符。
我们还可以使用一些运算符来进行长度比较。例如,下面的命令将获取所有句柄大于等于 1000 的进程,在下一个示例中,它小于 5000。
Get-Process | ?{$_.Handles -ge 1000}
Get-Process | ?{$_.Handles -lt 1000}
同样,您可以使用运算符 -Gt(大于)、-le(小于等于)来比较整数属性。
示例 #7 - 使用 True 或 False 属性。
在上面的示例中,我们使用了带有属性的 PowerShellWhere-Object 命令,但具有 True 或 False 输出的属性可以直接在 where 命令中使用。我们将看到基于命令和基于脚本块的示例。
Get-Process | where Responding
上面的示例将获取所有正在响应的进程,并且可以使用下面的 scripblock 编写相同的命令。
Get-Process | Where-Object{$_.Responding -eq $true}
对于没有响应的进程,
Get-Process | where -Property Responding -NE $true
使用脚本块,
Get-Process | where{!($_.Responding -eq $true)}
输出:
示例 #8 -Where-Object 与 -Contains 运算符。
要获取对象或数组值,我们可以使用运算符 Contains。例如,以下命令将使用 -Contains 运算符从 Process 输出中进行搜索。
Get-Process | where{$_.Name -contains "Chrome"}
要过滤区分大小写的内容,请使用 -CContains 运算符。
示例#8 - 在没有对象属性的情况下使用Where-Object。
像数组这样的对象没有属性名称,在这种情况下,我们可以使用 $_ 来通过Where-Object 过滤结果,而无需指定属性名称。
"Hello","PowerShell","Azure","Office365" | where{$_ -eq 'PowerShell'}
输出:
结论
PowerShell 中的Where-Object 被认为是PowerShell 结果的支柱,因为它可以在几秒或几分钟内从文件或对象中过滤出数千个结果,这有助于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