在 Configuration Manager 中创建查询

适用于: Configuration Manager(current branch)

本文介绍如何在 Configuration Manager 中创建和导入查询。

创建查询

使用此过程在 Configuration Manager 中创建查询。

  1. 在 Configuration Manager 控制台中,选择“监视”。

  2. “监视 ”工作区中,选择“ 查询”。 在“ 主页 ”选项卡上的“ 创建 ”组中,选择“ 创建查询”。

  3. “创建查询向导”的“常规”选项卡上,为查询指定唯一的名称和注释(可选)。

  4. 如果要导入现有查询以用作新查询的基础,请选择“ 导入查询语句”。 在“ 浏览查询 ”对话框中,选择要导入的查询,然后选择“ 确定”。

  5. “对象类型” 列表中,选择希望查询返回的对象类型。 下表描述了可搜索的对象类型的一些示例:

    对象类型 说明
    系统资源 用于搜索典型的系统属性,例如设备的 NetBIOS 名称、客户端版本、客户端 IP 地址和Active Directory 域服务信息。
    用户资源 用于搜索典型的用户信息,例如用户名、用户组名称和安全组名称。
    部署 使用 搜索部署的典型属性,例如部署名称、计划和部署集合。
  6. 选择 “编辑查询语句 ”,打开 <“查询名称>语句属性 ”对话框。

  7. 在“查询名称>语句属性”对话框的<“常规”选项卡上,指定查询返回的属性及其显示方式。 选择“ 新建 ”图标以添加新属性。 还可以选择“ 显示查询语言” ,直接在 WMI 查询语言 (WQL) 中输入或编辑查询。 有关 WMI 查询的示例,请参阅本文中的 WQL 查询示例 部分。

    • 可以使用以下参考文档来帮助构建自己的 WQL 查询:
    • 从 Configuration Manager 2010 开始,可以在创建或编辑集合成员身份查询时预览结果。 在 “查询语句属性”中,选择绿色三角形以显示 “查询结果预览 ”窗口。 如果要停止长时间运行的查询,请选择“ 停止 ”。
  8. 在“查询名称>语句属性”对话框的<“条件”选项卡上,指定用于优化查询结果的条件。 例如,只能返回站点代码为 XYZ 的资源。 可以为查询配置多个条件。

    重要

    如果创建不包含条件的查询,该查询将返回 All Systems 集合中的所有设备。

  9. 在“查询名称>语句属性”对话框的<“联接”选项卡上,可以将两个不同属性的数据合并到查询结果中。 虽然在为查询结果选择不同的属性时,Configuration Manager会自动创建查询联接,但“联接”选项卡提供了更多高级选项。 Configuration Manager支持以下属性类:

    联接类型 说明
    仅显示匹配的结果。 始终由自动创建的联接使用。
    Left 显示基属性的所有结果,仅显示联接属性的匹配结果。
    Right 显示联接属性的所有结果,仅显示基属性的匹配结果。
    完整 显示基属性和联接属性的所有结果。

    有关如何使用联接操作的详细信息,请参阅 SQL Server 文档。

  10. 选择 “确定” 以关闭“ <查询名称>语句属性 ”对话框。

  11. “创建查询向导”的“常规”选项卡上,指定查询结果不限于集合的成员,它们仅限于指定集合的成员,或者每次运行查询时都会显示集合的提示。

  12. 完成向导以创建查询。 新查询将显示在“监视”工作区的“查询”节点中。

导入查询

使用此过程将查询导入Configuration Manager。 有关如何导出查询的信息,请参阅 如何管理查询

  1. 在 Configuration Manager 控制台中,选择“监视”。

  2. “监视 ”工作区中,选择“ 查询”。 在“ 开始 ”选项卡上的“ 创建 ”组中,选择“ 导入对象”。

  3. “导入对象向导”的“MOF 文件名”页上,选择“浏览”以选择“托管对象格式” (包含要导入的查询的 MOF) 文件。

  4. 查看有关要导入的查询的信息,然后完成向导。 新查询将显示在“监视”工作区的“查询”节点上。

示例 WQL 查询

本部分包含示例 WQL 查询,可在层次结构中使用或出于其他目的进行修改。 若要使用这些查询,请在“查询语句属性”对话框中选择“显示查询语言”。 然后将查询复制并粘贴到 “查询语句 ”字段中。

提示

使用通配符 % 表示任何字符串。 例如, %Visio% 返回 office Visio 2010 Microsoft。

运行Windows 10的计算机

使用以下查询返回运行Windows 10的所有计算机的 NetBIOS 名称和操作系统版本。

select SMS_R_System.NetbiosName,  
SMS_R_System.OperatingSystemNameandVersion from
SMS_R_System where
SMS_R_System.OperatingSystemNameandVersion like "%Workstation 10%"  

安装了特定软件包的计算机

使用以下查询可返回安装了特定软件包的所有计算机的 NetBIOS 名称和软件包名称。 此示例返回安装了 Microsoft Visio 版本的所有计算机。 将 替换为 Microsoft%Visio% 要查询的软件包。

提示

此查询使用 Windows 控制面板 的程序列表中显示的名称搜索软件包。

select SMS_R_System.NetbiosName,
SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName from
SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on
SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId =
SMS_R_System.ResourceId where
SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "Microsoft%Visio%"  

特定Active Directory 域服务组织单位中的计算机

使用以下查询返回指定 OU 中所有计算机的 NetBIOS 名称和组织单位 (OU) 名称。 将文本 OU Name 替换为要查询的 OU 的名称。

select SMS_R_System.NetbiosName,
SMS_R_System.SystemOUName from
SMS_R_System where
SMS_R_System.SystemOUName = "OU Name"  

具有特定 NetBIOS 名称的计算机

使用以下查询可返回以特定字符串字符开头的所有计算机的 NetBIOS 名称。 在此示例中,查询返回以 开头 ABC的 NetBIOS 名称的所有计算机。

select SMS_R_System.NetbiosName from
SMS_R_System where SMS_R_System.NetbiosName like "ABC%"  

特定类型的设备

设备类型存储在资源类sms_r_system和属性名称 AgentEdition 下的 Configuration Manager 数据库中。 使用此查询仅检索与指定的设备类型的代理版本匹配的设备:

Select SMS_R_System.ClientEdition from SMS_R_System where SMS_R_System.ClientEdition = <Device ID>  

将以下值之一用于 <设备 ID>:

设备类型 AgentEdition 的值
Windows 台式机或便携式计算机 0
基于 Windows ARM 的设备 (运行Windows RT) 1
Windows Mobile 6.5 2
Nokia Symbian 3
Windows Phone 4
Mac 计算机 5
Windows Embedded 7
芯片上的 Intel 系统 12
Microsoft HoloLens (MDM) 15
Microsoft Surface Hub (MDM) 16

注意

此表中未列出的值与不再受支持的设备相关联。

例如,如果只想返回 Mac 计算机,请使用以下查询:

Select SMS_R_System.ClientEdition from SMS_R_System where SMS_R_System.ClientEdition = 5  

共同管理的设备

select SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name,
SMS_R_SYSTEM.SMSUniqueIdentifier, SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client
from SMS_R_System
inner join SMS_Client_ComanagementState on SMS_Client_ComanagementState.ResourceId = SMS_R_System.ResourceId 
where SMS_Client_ComanagementState.ComgmtPolicyPresent = 1 AND SMS_Client_ComanagementState.MDMEnrolled = 1 AND MDMProvisioned = 1

后续步骤

如何管理查询