Compartir a través de


Invoke-CMQuery

Ejecute una consulta de Configuration Manager.

Sintaxis

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 ejecutar una consulta en el sitio de Configuration Manager. Las consultas de Configuration Manager definen una expresión de lenguaje de consulta WMI (WQL) para obtener información de la base de datos del sitio en función de los criterios que proporcione. WQL es similar a SQL, pero sigue pasando por el proveedor de SMS en lugar de directamente a la base de datos. Por lo tanto, WQL sigue cumpliendo con la configuración de acceso basada en roles.

Al ejecutar una consulta, el sitio procesa la expresión WQL y devuelve los resultados en PowerShell. Dependiendo de la estructura de la instrucción WQL, el formato de los resultados puede variar.

Las consultas pueden devolver la mayoría de los tipos de objetos de Configuration Manager, que incluyen equipos, sitios, colecciones, aplicaciones y datos de inventario. Para obtener más información, consulte Introducción a las consultas en Configuration Manager.

Nota:

Ejecute cmdlets de Configuration Manager desde la unidad de sitio de Configuration Manager, por ejemplo PS XYZ:\>. Para obtener más información, consulte Introducción.

Ejemplos

Ejemplo 1: Visualización y ejecución de una consulta predeterminada

En este ejemplo se muestra primero el cmdlet Get-CMQuery para mostrar las propiedades de la consulta predeterminada, Este sitio y sus subsitios.

A continuación, muestra el cmdlet Invoke-CMQuery para ejecutar la misma consulta y mostrar los 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 en la salida del cmdlet Get-CMQuery que la expresión WQL es sencilla. Selecciona cuatro atributos de una sola clase.

A continuación, observe cómo la salida del cmdlet Invoke-CMQuery es una tabla sencilla.

Ejemplo 2: Visualización y ejecución de una consulta compleja

En este ejemplo se muestra primero el cmdlet Get-CMQuery para mostrar las propiedades de una consulta personalizada.

A continuación, muestra el cmdlet Invoke-CMQuery para ejecutar la misma consulta y mostrar los 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 tiene una expresión más compleja que combina dos clases. El resultado de la consulta es más complejo.

Parámetros

-Confirm

Solicitará confirmación antes de ejecutar el cmdlet.

Tipo:SwitchParameter
Alias:cf
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DisableWildcardHandling

Este parámetro trata los caracteres comodín como valores de caracteres literales. No se puede combinar con ForceWildcardHandling.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ForceWildcardHandling

Este parámetro procesa caracteres comodín y puede provocar un comportamiento inesperado (no recomendado). No se puede combinar con DisableWildcardHandling.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Id

Especifique el identificador de la consulta que se va a ejecutar. Por ejemplo, "XYZ00006".

Tipo:String
Alias:QueryId
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Especifique un objeto de consulta que se va a ejecutar. Para obtener este objeto, use el cmdlet Get-CMQuery .

Tipo:IResultObject
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-LimitToCollectionId

Si la consulta está configurada para solicitar la colección de limitación, use este parámetro para especificar un identificador de colección. Si la propiedad LimitToCollectionID de la consulta es <Prompt>y no incluye este parámetro al ejecutar la consulta, se produce un error en el cmdlet.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Name

Especifique el nombre de la consulta que se va a ejecutar.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-WhatIf

Muestra lo que ocurriría si se ejecuta el cmdlet. El cmdlet no se ejecuta.

Tipo:SwitchParameter
Alias:wi
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Salidas

System.Object