Where-Object 帮助信息

本文介绍 PowerShell 中 Where-Object 命令的使用方法,包括语法、参数及示例,帮助读者掌握如何利用 Where-Object 进行对象过滤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
如下说明是翻译: help where-object 产生的帮助信息.
译者: Edengundam(马涛)
 
Where-Object
 
大纲
创建一个用来控制输入对象是否沿着命令管道被传递的过滤器.
 
语法
Where-Object [-filterScript] <scriptblock> [-inputObject <psobject>] [<CommonParameters>]
 
详细描述
创建一个用来控制输入对象是否沿着命令管道被传递的过滤器. 它将过滤从管道或通过InputObject参数所输入的对象. 它通过可能包含对需要过滤的对象引用的代码块进行求值, 来决定该对象是否沿着管道被出书. 如果求值结果为真(true), 则该对象沿着管道被输出, 否则该对象将被丢弃.
 
参数
 
-filterScript <scriptblock>
指定一个用去确定输入对象是否沿着命令管道被输出的代码块.
 
强制参数?
true
参数位置?
1
默认值
 
允许从管道绑定输入?  
false
允许通配符扩展
false
 
-inputObject <psobject>
指定被过滤的对象. 如果你将命令的输出保存在一个变量中, 你可以使用InputObject将该变量的值传递给Where-Object. 然而通常情况, InputObject不会在命令行使用. 当对象从管道中输入时, Windows PowerShell将负责把输入对象和InputObject参数相绑定.
 
强制参数?
false
参数位置?
named
默认值
 
允许从管道绑定输入?  
true (传值)
允许通配符扩展
false
 
<公共参数>
此命令支持公共参数: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 更多信息, 输入, "get-help about_commonparameters".
 
注意
 
更多信息, 输入"Get-Help Where-Object -detailed".需要技术信息, 输入"Get-Help Write-Object -full".
 
如果需要为该命令提供多个参数, 请使用逗号进行分隔. 例如, "<parameter-name> <value1>, <value2>".
 
1
 
C:/PS>get-service | where-object {$_.Status -eq "Stopped"}
 
此命令返回当前停止的服务列表.
 
2
 
C:/PS>get-process | where-object {$_.workingset -gt 25000*1024}
 
此命令列出工作集(workingset)大于25000K的进程. 工作集属性的值按照字节单位存储, 因此需要乘以1024.
 
3
 
C:/PS>get-process | where-object { $_.ProcessName -match "^p.*" }
 
此命令列出进程名称以字母p开头的所有进程. Match运算符允许在Where子句中使用正则表达式.
 
4
 
C:/PS>get-process -name svchost | where-object {$True}
 
此命令列出所有叫svchost的进程. where-object cmdlet对脚本块进行求值, 通常情况下脚本块包含一个对当前管道中对象的引用 ($_),  将脚本块的输出值转换为布尔类型: TrueFalse. 如果结果为True, 则此对象被沿着管道继续传递, 否则该对象被丢弃. 此例子中, 脚本块只返回True, 所以所有的对象都沿着管道被输出.
 
相关链接
Select-Object
about_where
about_regular_expression
 
 
 
<think>好的,我现在需要帮助用户理解他们提供的PowerShell命令。用户之前询问了如何批量删除Win10中的COM端口,现在他们具体问到了这个命令:“Get-PnpDevice | Where-Object {$_.Class -eq "Ports"} | ForEach { $_ | Remove-PnpDevice -Confirm:$false }”。 首先,我要分解这个命令的各个部分。首先是Get-PnpDevice,这个命令的作用是获取所有即插即用设备。接下来是Where-Object筛选出Class属性等于"Ports"的设备,也就是COM和LPT端口。然后通过ForEach循环对每个设备执行Remove-PnpDevice来删除,同时使用-Confirm:$false来跳过确认提示。 接下来,我需要解释每个部分的具体功能,确保用户明白每个步骤的作用。然后,要强调以管理员权限运行的重要性,因为普通用户可能没有权限删除设备。同时,需要提到风险,比如误删可能导致硬件无法使用,尤其是如果用户不确定哪些端口正在被使用的话。 用户可能没有明确说出他们的使用场景,但考虑到他们之前的问题是关于批量删除,可能他们遇到了大量无用COM端口的情况,比如连接过多个串口设备后遗留的虚拟端口。这时候,他们需要高效的方法来清理,而手动删除太麻烦。不过,他们可能并不清楚这个命令的潜在风险,比如删除了正在使用的端口,导致外设无法工作。 还要考虑用户可能的后续问题,比如如何确认哪些端口可以安全删除,或者是否有其他方法更安全。因此,在解释命令之后,需要提醒用户谨慎操作,建议先列出设备进行检查,再执行删除。此外,提供替代方案,比如使用设备管理器手动删除,或者通过注册表编辑,但也要指出这些方法的风险。 需要确保语言简洁明了,避免技术术语过多,让用户容易理解。同时,结构要清晰,分点解释命令结构、注意事项和补充说明,帮助用户逐步掌握信息。最后,附上相关问题链接,引导用户进一步了解如何检查端口占用或管理COM资源,这样他们可以自行解决后续问题。</think>以下是针对命令 `Get-PnpDevice | Where-Object {$_.Class -eq "Ports"} | ForEach { $_ | Remove-PnpDevice -Confirm:$false }` 的详细解释: --- ### **命令功能** 这条 PowerShell 命令用于 **批量卸载 Windows 系统中所有已识别的 COM 和 LPT 端口设备**。 适用于清理残留或无效的虚拟串行端口(如 USB 转串口设备、蓝牙虚拟端口等)。 --- ### **命令结构解析** 1. **`Get-PnpDevice`** - 作用:获取系统中所有即插即用(Plug and Play)设备的信息- 输出:包含设备名称、状态、实例 ID 等属性的列表。 2. **`Where-Object {$_.Class -eq "Ports"}`** - 作用:筛选出设备类别为 **"Ports"** 的设备(即 COM 和 LPT 端口)。 - 说明:`$_` 表示当前管道中的对象,`-eq` 表示“等于”。 3. **`ForEach { $_ | Remove-PnpDevice -Confirm:$false }`** - 作用:对筛选出的每个设备执行卸载操作。 - `Remove-PnpDevice`:卸载设备驱动。 - `-Confirm:$false`:跳过确认提示,直接执行删除。 --- ### **注意事项** 1. **管理员权限** - 必须通过 **管理员身份运行 PowerShell**,否则权限不足会导致命令失败。 2. **风险提示** - **强制删除所有端口**,可能影响正在使用的硬件(如 Arduino、PLC 编程线等)。 - 若误删物理设备(如 USB 转串口线),重新插拔设备后系统会自动恢复端口。 3. **建议操作流程** - 先通过以下命令查看所有 COM 端口列表,确认无关键设备后再执行删除: ```powershell Get-PnpDevice | Where-Object {$_.Class -eq "Ports"} | Format-Table FriendlyName, InstanceId ``` --- ### **补充说明** - **适用场景**: - 清理因频繁插拔硬件或虚拟串口工具(如 Virtual COM Port Driver)残留的无效端口。 - 解决因 COM 端口号累积导致的新设备无法分配端口问题。 - **替代方案**: - 若需保留部分端口,可通过注册表手动删除特定实例 ID(路径:`计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum`)。 --- ### **示例输出** 执行命令后,若成功会显示类似以下信息(无显式成功提示,但设备会被移除): ``` FriendlyName InstanceId ------------ ---------- USB 串行设备 (COM3) USB\VID_067B&PID_2303\12345678 蓝牙通信端口 (COM5) BTHENUM\{00001101-0000-1000-8000-00805F9B34FB}_LOCALMFG&0000... ``` --- ### **附:相关问题** - [如何查看某个特定 COM 端口是否正被占用?](your-link) - [Windows 中如何自动生成新的空闲 COM 端口号?](your-link) - [是否存在专用软件帮助管理复杂的 COM 资源分配情况?](your-link)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值