Share via


Invoke-CMQuery

Execute uma consulta 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

Use este cmdlet para executar uma consulta no site Configuration Manager. Configuration Manager consultas definem uma expressão WQL (WMI Query Language) para obter informações do banco de dados do site com base nos critérios fornecidos. O WQL é semelhante ao SQL, mas ainda passa pelo Provedor de SMS em vez de diretamente para o banco de dados. Portanto, o WQL ainda respeita sua configuração de acesso baseada em função.

Quando você executa uma consulta, o site processa a expressão WQL e retorna os resultados no PowerShell. Dependendo da estrutura da instrução WQL, o formato dos resultados pode variar.

As consultas podem retornar a maioria dos tipos de objetos Configuration Manager, que incluem computadores, sites, coleções, aplicativos e dados de inventário. Para obter mais informações, consulte Introdução a consultas no Configuration Manager.

Observação

Execute Configuration Manager cmdlets da unidade do site Configuration Manager, por exemplo PS XYZ:\>. Para obter mais informações, confira introdução.

Exemplos

Exemplo 1: exibir e executar uma consulta padrão

Este exemplo mostra primeiro o cmdlet Get-CMQuery para mostrar as propriedades da consulta padrão, Este Site e seus Subsites.

Em seguida, ele mostra o cmdlet Invoke-CMQuery para executar a mesma consulta e mostrar os resultados.

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

Observe na saída do cmdlet Get-CMQuery que a Expressão WQL é simples. Ele seleciona quatro atributos de uma única classe.

Em seguida, observe como a saída do cmdlet Invoke-CMQuery é uma tabela simples.

Exemplo 2: exibir e executar uma consulta complexa

Este exemplo mostra primeiro o cmdlet Get-CMQuery para mostrar as propriedades de uma consulta personalizada.

Em seguida, ele mostra o cmdlet Invoke-CMQuery para executar a mesma consulta e mostrar os resultados.

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";
                                };

Essa consulta tem uma Expressão mais complexa que une duas classes. O resultado da consulta é então mais complexo.

Parâmetros

-Confirm

Solicita a confirmação antes de executar o cmdlet.

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

-DisableWildcardHandling

Esse parâmetro trata caracteres curinga como valores de caractere literal. Você não pode combiná-lo com ForceWildcardHandling.

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

-ForceWildcardHandling

Esse parâmetro processa caracteres curinga e pode levar a um comportamento inesperado (não recomendado). Você não pode combiná-lo com DisableWildcardHandling.

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

-Id

Especifique a ID da consulta a ser executada. Por exemplo, "XYZ00006".

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

-InputObject

Especifique um objeto de consulta a ser executado. Para obter esse objeto, use o cmdlet Get-CMQuery .

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

-LimitToCollectionId

Se a consulta estiver configurada para solicitar a coleção de limitação, use esse parâmetro para especificar uma ID de coleção. Se a propriedade LimitToCollectionID da consulta for <Prompt>, e você não incluir esse parâmetro ao executar a consulta, o cmdlet falhará.

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

-Name

Especifique o nome da consulta a ser executada.

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

-WhatIf

Mostrar o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

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

Entradas

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Saídas

System.Object