Invoke-CMQuery

Execute uma consulta do Configuration Manager.

Sintaxe

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

Utilize este cmdlet para executar uma consulta no site do Configuration Manager. As consultas do Configuration Manager definem uma expressão WMI Query Language (WQL) para obter informações da base de dados do site com base nos critérios que fornecer. O WQL é semelhante ao SQL, mas continua a passar pelo Fornecedor de SMS em vez de diretamente para a base de dados. Assim, o WQL continua a respeitar a configuração de acesso baseado em funções.

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

As consultas podem devolver a maioria dos tipos de objetos do Configuration Manager, que incluem computadores, sites, coleções, aplicações e dados de inventário. Para obter mais informações, veja Introdução às consultas no Configuration Manager.

Observação

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

Exemplos

Exemplo 1: Ver e executar uma consulta predefinida

Este exemplo mostra primeiro o cmdlet Get-CMQuery para mostrar as propriedades da consulta predefinida, Este Site e os respetivos Subsites.

Em seguida, 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

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

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

Exemplo 2: Ver e executar uma consulta complexa

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

Em seguida, 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";
                                };

Esta consulta tem uma Expressão mais complexa que associa duas classes. O resultado da consulta é, em seguida, mais complexo.

Parâmetros

-Confirm

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

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DisableWildcardHandling

Este parâmetro trata os carateres universais como valores de carateres literais. Não pode combiná-lo com ForceWildcardHandling.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ForceWildcardHandling

Este parâmetro processa carateres universais e pode levar a um comportamento inesperado (não recomendado). Não pode combiná-lo com DisableWildcardHandling.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Id

Especifique o ID da consulta a executar. Por exemplo, "XYZ00006".

Tipo:String
Aliases:QueryId
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputObject

Especifique um objeto de consulta a executar. Para obter este objeto, utilize o cmdlet Get-CMQuery .

Tipo:IResultObject
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-LimitToCollectionId

Se a consulta estiver configurada para pedir a coleção de limitação, utilize este parâmetro para especificar um ID de coleção. Se a propriedade LimitToCollectionID da consulta for <Prompt>e não incluir este parâmetro quando executar a consulta, o cmdlet falha.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Name

Especifique o nome da consulta a executar.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-WhatIf

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

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Saídas

System.Object