[玩转系统] PowerShell 初学者(第 10 部分):过滤和Where-Object
作者:精品下载站 日期:2024-12-14 07:26:51 浏览:16 分类:玩电脑
PowerShell 初学者(第 10 部分):过滤和Where-Object
我们已经了解了很多有关 PowerShell 的知识。上次我们使用 WMI:PowerShell 初学者(第 9 部分):使用 PowerShell 和 WMI 从 Windows 获取一切 现在,在我看来,现在是关注“使用 PowerShell 进行过滤”主题的最佳时机。但首先,让我们看一下上一部分的练习。
该系列的所有部分都可以在这里找到:PowerShell 初学者(系列)
回顾(第 9 部分)
这是第 9 部分的作业和解决方案:
检索有关硬盘的信息。使用 Get-WmiObject 或 Get-CimInstance。首先,搜索 WMI 对象,找到后会显示名称、分区、型号、固件和序列号。
首先,我们需要找出 WMI 实例名称。由于任务涉及硬盘,因此我们可以搜索 *disk*,例如。
Get-WmiObject *disk* -List
Win32_DiskDrive 听起来不错。请记住第 8 部分中的两步方法,以充分利用 PowerShell:
Get-CimInstance win32_diskdrive | Get-Member
在那里您会找到适当的属性。现在使用 Select-Object 来获取所有这些。
Get-CimInstance Win32_DiskDrive | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
审查
WMI(Windows 管理工具)提供对几乎所有 Windows 设置的读写访问权限。有两个重要的 cmdlet:Get-WmiObject 和 Get-CimInstance。
为什么要过滤?
过滤是PowerShell中的一项关键技术。一旦了解如何过滤,您就能从 PowerShell 中获得更多收益。
好吧,我这部分的任务是解释为什么过滤很重要。好吧,假设您有多个硬盘。上面的输出显示了所有硬盘。但例如,您只想显示三星硬盘。
你为什么想做这个?也许您的老板问您正在使用多少个三星磁盘。在所有计算机上。请记住,WMI 和 PowerShell 使您能够执行远程查询。好吧回到主题。我们只想要 500 GB 的三星 SSD。注意过滤参数!
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
以下内容有点不同寻常,适合更高级的 PowerShell 书呆子,但为什么不呢?以下命令从所有域计算机获取所有三星 SSD,但不从服务器获取。
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" -ComputerName (Get-ADComputer -Filter {operatingsystem -notlike '*server*'}).Name | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
如果您的同事认为您面临无法解决的问题,只需按下按钮并向他们展示您可以做什么。 ?
好吧,让我们来看初学者的例子。
过滤对象
您还记得 Get-ChildItem 命令吗?我在本系列中经常使用这个命令。
如果您运行 Get-Help Get-ChildItem 您会在帮助中找到很多过滤示例。
Get-Help Get-ChildItem -Online
我更喜欢使用本地帮助。
Get-Help Get-ChildItem -Examples
到目前为止我们学到了什么?
过滤是 PowerShell 中的一项关键技术。一旦了解了如何过滤,您就会从 PowerShell 中获得更多收益。
过滤 Active Directory 对象
如果您是 IT 专业人员,您可能在 Active Directory 环境中工作。过滤是使用 Active Directory 对象时的一项关键技术。
以下命令使用 Filter 参数来获取所有被禁用的用户:
Get-ADUser -Filter {enabled -eq 'false'} | Select-Object Name
您可能想知道我如何知道属性名称?请记住从对象中获取更多信息的两步方法: 1. 使用 Get-Member 2. 使用 Select-Object。
过滤器参数
让我们环顾四周。哪些命令使用过滤器参数?请注意,我在域控制器上。
Get-Command -ParameterName Filter
正如您所看到的,过滤器参数主要用于 Active Directory 命令中。而且我必须承认,我一直只对 Active Directory 使用过滤器参数。它就是这样儿的。那么,让我们集中讨论 Active Directory。假设我们希望所有域计算机(服务器操作系统和客户端操作系统)按操作系统排序。为此,我们必须使用带有 * 的过滤器参数。
Get-ADComputer -Filter * -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address | Sort-Object OperatingSystem | Select-Object Name,OperatingSystem
就过滤而言,这是一项简单的任务。
过滤方法
现在我们尝试获取所有安装了 Windows 10 的计算机。为此,我们必须将过滤器参数放在括号中。
Get-ADComputer -Filter {operatingsystem -like '*windows 10*'}
是时候分解细节了。
括号
将过滤器放入弯曲支架中。
属性
接下来找出属性(属性)名称。我们已经在 PowerShell 初学者(第 8 部分)中讨论过它:PowerShell 的力量 - 接触对象(获取成员、选择对象)。记住两步法!
Get-ADComputer client01 -Properties * | Get-Member
旁注:注意属性参数。在 Active Directory 中,默认情况下并不显示所有属性。
经营者
接下来使用运算符。
运算符可以是 -like、-as、-equal、-ne 等等……有关参数类型的更多信息
help about_operators
这将打开存储在您的计算机上的文本文件。
该声明
如果我们想要过滤某些东西,我们需要一个条件。该条件必须放在引号中。
审查
如果您使用过滤器,请先参阅“帮助”部分。过滤器通常放在括号中。通常还使用运算符。
更多过滤器示例……无需多言……
搜索密码错误计数为 0 的用户。以下是 Petra 帐户的示例:
Get-ADUser -Filter {badpwdcount -eq '0'} | Select-Object Name
搜索错误密码计数为 0 且已启用的用户。 (您会看到 Petra 未启用)。
Get-ADUser -Filter {(badpwdcount -eq '0') -and (enabled -eq 'true')} | Select-Object Name
显示所有 Windows Server 域计算机,但仅显示运行 Windows Server 2016 且名称以 DC 开头的计算机。
Get-ADComputer -Filter {(operatingsystem -like '*2016*') -and (name -like 'dc*')}
但有时我们必须寻找另一种方式。即当没有可用的过滤时。然后我们使用Where-Object。
使用Where-Object 进行过滤
Where-Object 始终位于管道的右侧。左侧筛选。这意味着什么,帖子末尾的优点和缺点。对于这一部分,我们将集中讨论Where-Object。
以下是 PowerShell 帮助中的一些示例。
Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}
Get-ChildItem c:\scripts | Where-Object {$_.length -gt 100000}
但是,我想使用我的贡献之一中的示例。
Get-Hotfix | Where-Object HotfixID -like KB31*
注意HotFixID。它指的是一个属性。
推荐的过程(因为向后兼容性)如下所示:
Get-Hotfix | Where-Object {$_.HotfixID -like 'KB31*'}
现在有新的东西了。 $_ 是什么意思?
$_ 是一个变量,它迭代从前一个(管道)传递的每个对象/元素。简单地说:从管道中的每个对象中获取 hotfixID。
过滤与Where-Object
如果没有可用的过滤器,请使用Where-Object。如果您能够在管道左侧使用过滤器,请使用它!为什么?嗯,无论是通过管道发送 1000 个对象还是仅发送 500 个对象,这都是有区别的,在Where-Object 的情况下,所有对象都必须通过管道,然后才会被过滤。记住第 7 部分中的管道:适用于初学者的 PowerShell(第 7 部分):管道(以及许多可供使用的示例)
审查
Where-Object 始终位于管道的右侧。左侧筛选。如果您可以选择管道左侧的过滤器或右侧的Where-Object,请选择左侧。
锻炼
这是下一部分的练习。
对象位置:
使用 Get-Service 和Where-Object 仅显示正在运行的服务。
过滤器(需要 Active Directory):
使用 Filter 参数获取所有被禁用的用户。
下次主题再见:PowerShell 初学者(第 11 部分):享受 PowerShell 驱动器的乐趣
Patrick Gruenauer,PowerShell MVP
猜你还喜欢
- 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