Invoke-CMQuery

Ejecute una consulta de 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 ejecutar una consulta en el sitio de Configuration Manager. Configuration Manager consultas 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 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 Configuration Manager, por ejemploPS 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, This Site 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.

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

-DisableWildcardHandling

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

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

-ForceWildcardHandling

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

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

-Id

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

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

-InputObject

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

Type:IResultObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

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

-Name

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

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

-WhatIf

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

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

Entradas

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Salidas

System.Object