Invoke-CMQuery
运行 Configuration Manager 查询。
语法
Invoke-CMQuery
-InputObject <IResultObject>
[-LimitToCollectionId <String>]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-CMQuery
-Id <String>
[-LimitToCollectionId <String>]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-CMQuery
[-LimitToCollectionId <String>]
-Name <String>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
使用此 cmdlet 在 Configuration Manager 站点中运行查询。 Configuration Manager 查询定义 WMI 查询语言 (WQL) 表达式,以便根据提供的条件从站点数据库获取信息。 WQL 类似于 SQL,但仍通过 SMS 提供程序而不是直接访问数据库。 因此,WQL 仍遵循基于角色的访问配置。
运行查询时,站点将处理 WQL 表达式,并在 PowerShell 中返回结果。 根据 WQL 语句的结构,结果的格式可能会有所不同。
查询可以返回大多数类型的 Configuration Manager 对象,其中包括计算机、站点、集合、应用程序和清单数据。 有关详细信息,请参阅 Configuration Manager 中的查询简介。
注意
从 Configuration Manager 站点驱动器运行 Configuration Manager cmdlet,例如 PS XYZ:\>
。 有关详细信息,请参阅 入门。
示例
示例 1:查看和运行默认查询
此示例首先显示 Get-CMQuery cmdlet,以显示默认查询 “此网站”及其子网站的属性。
然后,它显示 Invoke-CMQuery cmdlet 以运行相同的查询并显示结果。
PS XYZ:\> Get-CMQuery -Id "SMS012"
SmsProviderObjectPath : SMS_Query.QueryID="SMS012"
Comments : This site and all its subsites in the ConfigMgr hierarchy
Expression : SELECT SiteCode, SiteName, Version, ServerName FROM sms_siteandsubsites
LimitToCollectionID :
LocalizedCategoryInstanceNames : {}
Name : This Site and its Subsites
QueryID : SMS012
ResultAliasNames : {sms_siteandsubsites, sms_siteandsubsites, sms_siteandsubsites, sms_siteandsubsites}
ResultColumnsNames : {sms_siteandsubsites.SiteCode, sms_siteandsubsites.SiteName,
sms_siteandsubsites.Version, sms_siteandsubsites.ServerName}
TargetClassName : sms_siteandsubsites
PS XYZ:\> Invoke-CMQuery -Id "SMS012"
SmsProviderObjectPath : SMS_SiteAndSubsites.SiteCode="XYZ"
ServerName : cmserver.contoso.com
SiteCode : XYZ
SiteName : Production primary site
Version : 5.00.9043.1000
请注意, 在 Get-CMQuery cmdlet 的输出中,WQL 表达式 很简单。 它从单个类中选择四个属性。
然后,请注意 Invoke-CMQuery cmdlet 的输出是一个简单的表。
示例 2:查看和运行复杂查询
此示例首先演示 Get-CMQuery cmdlet,以显示自定义查询的属性。
然后,它显示 Invoke-CMQuery cmdlet 以运行相同的查询并显示结果。
PS XYZ:\> Get-CMQuery -Id "XYZ00002"
SmsProviderObjectPath : SMS_Query.QueryID="XYZ00002"
Comments :
Expression : select SMS_R_System.Name, SMS_R_System.LastLogonUserName,
SMS_G_System_OPERATING_SYSTEM.Caption from SMS_R_System inner join
SMS_G_System_OPERATING_SYSTEM on SMS_G_System_OPERATING_SYSTEM.ResourceID =
SMS_R_System.ResourceId where SMS_G_System_OPERATING_SYSTEM.Caption like "Microsoft Windows Server 2012%"
LimitToCollectionID : XYZ0025F
LocalizedCategoryInstanceNames : {}
Name : Server 2016
QueryID : XYZ00002
ResultAliasNames : {SMS_R_System, SMS_R_System, SMS_G_System_OPERATING_SYSTEM}
ResultColumnsNames : {SMS_R_System.Name, SMS_R_System.LastLogonUserName,
SMS_G_System_OPERATING_SYSTEM.Caption}
TargetClassName : SMS_R_System
PS XYZ:\> Invoke-CMQuery -Id "XYZ00002"
SmsProviderObjectPath : __GENERIC
SMS_G_System_OPERATING_SYSTEM :
instance of SMS_G_System_OPERATING_SYSTEM
{
Caption = "Microsoft Windows Server 2012 R2 Datacenter";
};
SMS_R_System :
instance of SMS_R_System
{
LastLogonUserName = "jqpublic";
Name = "millcreek01";
};
此查询具有一个更复杂的 表达式 ,用于联接两个类。 然后,查询的结果会更加复杂。
参数
-Confirm
提示你在运行 cmdlet 之前进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DisableWildcardHandling
此参数将通配符视为文本字符值。 不能将其与 ForceWildcardHandling 组合使用。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ForceWildcardHandling
此参数处理通配符,并可能导致意外行为, (不建议) 。 不能将其与 DisableWildcardHandling 组合使用。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Id
指定要运行的查询的 ID。 例如,"XYZ00006"
。
类型: | String |
别名: | QueryId |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-InputObject
指定要运行的查询对象。 若要获取此对象,请使用 Get-CMQuery cmdlet。
类型: | IResultObject |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-LimitToCollectionId
如果查询配置为提示输入限制集合,请使用此参数指定集合 ID。 如果查询的 LimitToCollectionID 属性为 <Prompt>
,并且运行查询时未包含此参数,则 cmdlet 将失败。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Name
指定要运行的查询的名称。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示在 cmdlet 运行时发生的情况。 cmdlet 不会运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
Microsoft.ConfigurationManagement.ManagementProvider.IResultObject
输出
System.Object