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>]
説明
Configuration Manager サイトでクエリを実行するには、このコマンドレットを使用します。 Configuration Manager クエリは、指定した条件に基づいてサイト データベースから情報を取得する WMI クエリ言語 (WQL) 式を定義します。 WQL は、データベースSQL似ていますが、データベースに直接ではなく SMS プロバイダーを経由します。 そのため、WQL は役割ベースのアクセス構成を引き続き適用します。
クエリを実行すると、サイトは WQL 式を処理し、PowerShell で結果を返します。 WQL ステートメントの構造によっては、結果の形式が異なる場合があります。
クエリは、コンピューター、サイト、コレクション、アプリケーション、インベントリ データなど、ほとんどの種類の Configuration Manager オブジェクトを返します。 詳細については 、「Configuration Manager でのクエリの概要」を参照してください。
注意
Configuration Manager サイト ドライブから Configuration Manager コマンドレットを実行します PS XYZ:\> 。 詳細については 、「Getting started」を参照してください。
例
例 1: 既定のクエリを表示して実行する
この例では、最初に Get-CMQuery コマンドレットを表示して、既定のクエリである This Site とその Subsites のプロパティを表示します。
次に、 同じクエリを実行 して結果を表示する Invoke-CMQuery コマンドレットが表示されます。
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 コマンドレットの出力で、WQL 式が簡単です。 1 つのクラスから 4 つの属性を選択します。
次に 、Invoke-CMQuery コマンドレットの出力が単純なテーブルである方法に注意してください。
例 2: 複雑なクエリを表示して実行する
この例では、 まず Get-CMQuery コマンドレットを示して、カスタム クエリのプロパティを表示します。
次に、 同じクエリを実行 して結果を表示する Invoke-CMQuery コマンドレットが表示されます。
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";
};
このクエリには、2 つの クラスに参加 する、より複雑な式があります。 クエリの結果は、より複雑になります。
パラメーター
コマンドレットを実行する前に確認メッセージを表示します。
| Type: | SwitchParameter |
| Aliases: | cf |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
このパラメーターは、ワイルドカード文字をリテラル文字値として扱います。 ForceWildcardHandling と組み合わせは使用できない。
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
このパラメーターはワイルドカード文字を処理し、予期しない動作を引き起こします (推奨されません)。 DisableWildcardHandling と組み合わせは使用できない。
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
実行するクエリの ID を指定します。 たとえば、"XYZ00006" などです。
| Type: | String |
| Aliases: | QueryId |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
実行するクエリ オブジェクトを指定します。 このオブジェクトを取得するには 、Get-CMQuery コマンドレットを使用 します。
| Type: | IResultObject |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
制限コレクションの入力を求めるクエリが構成されている場合は、このパラメーターを使用してコレクション ID を指定します。 クエリの LimitToCollectionID プロパティが 、クエリの実行時にこのパラメーターを含めなかった場合、コマンドレット <Prompt> は失敗します。
| Type: | String |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
実行するクエリの名前を指定します。
| Type: | String |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
コマンドレットが実行されるとどうなるかを示します。 コマンドレットは実行されません。
| Type: | SwitchParameter |
| Aliases: | wi |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
入力
Microsoft.ConfigurationManagement.ManagementProvider.IResultObject
出力
System.Object