You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SCCM的PowerShell WQL查询中添加双重WHERE过滤条件?

在SCCM的WQL查询中添加多个WHERE过滤条件

嘿,作为SCCM PowerShell WQL新手,你已经迈出了超棒的第一步!要给你的查询加多个过滤条件其实很简单——WQL和SQL逻辑一致,用AND或者OR就能轻松连接多个条件,选哪个取决于你是要同时满足所有条件(用AND)还是满足任意一个条件(用OR)。

先简化你原有的代码

首先,你给输入主机名前后加%的写法可以简化成一行,不用分开调用Insert和+=,更简洁:

[string]$poste_entre = "%$(Read-Host "Poste")%"

添加多个过滤条件的实战示例

下面给你举两个常见的场景示例,你可以根据自己的实际需求替换条件字段:

示例1:同时满足「主机名模糊匹配」+「已安装SCCM客户端」

如果你只想筛选出匹配主机名且已经装了SCCM客户端的设备,就用AND连接两个条件:

# 获取用户输入并自动添加模糊匹配通配符
[string]$poste_entre = "%$(Read-Host "Poste")%"

# 构造包含双条件的WQL查询
[string]$wqlQuery = @"
SELECT SMS_R_System.Name 
FROM SMS_R_System 
WHERE SMS_R_System.Name LIKE '$poste_entre' 
AND SMS_R_System.Client = 1
"@

# 执行SCCM查询并提取结果
[string[]]$postes = (Get-WmiObject -ComputerName SSigcimpr001 -Namespace "root\sms\site_pr1" -Query $wqlQuery).Name

# 输出最终结果
$postes

示例2:满足「主机名模糊匹配」OR「操作系统是Windows 10」

如果你想筛选出主机名匹配或者操作系统是Windows 10的设备,就把AND换成OR:

[string]$poste_entre = "%$(Read-Host "Poste")%"

[string]$wqlQuery = @"
SELECT SMS_R_System.Name 
FROM SMS_R_System 
WHERE SMS_R_System.Name LIKE '$poste_entre' 
OR SMS_R_System.OperatingSystemNameandVersion LIKE '%Windows 10%'
"@

[string[]]$postes = (Get-WmiObject -ComputerName SSigcimpr001 -Namespace "root\sms\site_pr1" -Query $wqlQuery).Name
$postes

实用小提示

  • 要确认你用的字段名是正确的,想查看SMS_R_System类的所有可用属性,在PowerShell里执行这条命令就行:
    Get-WmiObject -Namespace "root\sms\site_pr1" -Class SMS_R_System | Get-Member -MemberType Property
    
  • 如果需要三个或更多条件,继续用AND/OR连接即可,比如:WHERE 条件1 AND 条件2 AND 条件3

内容的提问来源于stack exchange,提问作者Rakha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:48:22