Invoke-CMQuery

執行Configuration Manager查詢。

Syntax

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>]

Description

使用此 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,以顯示預設查詢 This Site 及其子網站的屬性。

然後,它會顯示 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";
                                };

此查詢具有更複雜的 Expression ,可聯結兩個類別。 查詢的結果會更複雜。

參數

-Confirm

執行 Cmdlet 之前提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableWildcardHandling

此參數會將萬用字元視為常值字元值。 您無法將其與 ForceWildcardHandling結合。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ForceWildcardHandling

此參數會處理萬用字元,並可能導致非預期的行為 (不建議) 。 您無法將其與 DisableWildcardHandling結合。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

指定要執行之查詢的識別碼。 例如,"XYZ00006"

Type:String
Aliases:QueryId
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要執行的查詢物件。 若要取得此物件,請使用 Get-CMQuery Cmdlet。

Type:IResultObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LimitToCollectionId

如果查詢設定為提示限制集合,請使用此參數來指定集合識別碼。 如果查詢的 LimitToCollectionID 屬性為 <Prompt> ,而且您在執行查詢時未包含此參數,則 Cmdlet 會失敗。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

指定要執行的查詢名稱。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 時會發生什麼情況。 Cmdlet 不會執行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

輸出

System.Object