Partager via


Invoke-CMQuery

Exécutez une requête Configuration Manager.

Syntaxe

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

Utilisez cette applet de commande pour exécuter une requête dans le site Configuration Manager. Les requêtes Configuration Manager définissent une expression WQL (WMI Query Language) pour obtenir des informations à partir de la base de données de site en fonction des critères que vous fournissez. WQL est similaire à SQL, mais passe toujours par le fournisseur SMS au lieu d’être directement dans la base de données. Par conséquent, WQL respecte toujours votre configuration d’accès en fonction du rôle.

Lorsque vous exécutez une requête, le site traite l’expression WQL et retourne les résultats dans PowerShell. Selon la structure de l’instruction WQL, le format des résultats peut varier.

Les requêtes peuvent retourner la plupart des types d’objets Configuration Manager, notamment les ordinateurs, les sites, les regroupements, les applications et les données d’inventaire. Pour plus d’informations, consultez Présentation des requêtes dans Configuration Manager.

Remarque

Exécutez des applets de commande Configuration Manager à partir du lecteur de site Configuration Manager, par exemple PS XYZ:\>. Pour plus d’informations, consultez Prise en main.

Exemples

Exemple 1 : Afficher et exécuter une requête par défaut

Cet exemple montre d’abord l’applet de commande Get-CMQuery pour afficher les propriétés de la requête par défaut, Ce site et ses sous-sites.

Elle affiche ensuite l’applet de commande Invoke-CMQuery pour exécuter la même requête et afficher les résultats.

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

Notez dans la sortie de l’applet de commande Get-CMQuery que l’expression WQL est simple. Il sélectionne quatre attributs à partir d’une seule classe.

Notez ensuite que la sortie de l’applet de commande Invoke-CMQuery est une table simple.

Exemple 2 : Afficher et exécuter une requête complexe

Cet exemple montre d’abord l’applet de commande Get-CMQuery pour afficher les propriétés d’une requête personnalisée.

Elle affiche ensuite l’applet de commande Invoke-CMQuery pour exécuter la même requête et afficher les résultats.

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

Cette requête a une expression plus complexe qui joint deux classes. Le résultat de la requête est alors plus complexe.

Paramètres

-Confirm

Une invite de confirmation apparaît avant d’exécuter le cmdlet.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DisableWildcardHandling

Ce paramètre traite les caractères génériques comme des valeurs de caractère littéral. Vous ne pouvez pas la combiner avec ForceWildcardHandling.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ForceWildcardHandling

Ce paramètre traite les caractères génériques et peut entraîner un comportement inattendu (non recommandé). Vous ne pouvez pas la combiner avec DisableWildcardHandling.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Id

Spécifiez l’ID de la requête à exécuter. Par exemple : "XYZ00006".

Type:String
Alias:QueryId
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifiez un objet de requête à exécuter. Pour obtenir cet objet, utilisez l’applet de commande Get-CMQuery .

Type:IResultObject
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-LimitToCollectionId

Si la requête est configurée pour demander la limitation du regroupement, utilisez ce paramètre pour spécifier un ID de collection. Si la propriété LimitToCollectionID de la requête est <Prompt>et que vous n’incluez pas ce paramètre lorsque vous exécutez la requête, l’applet de commande échoue.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Name

Spécifiez le nom de la requête à exécuter.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WhatIf

Présente ce qui se produit si le cmdlet s’exécute. L’applet de commande ne s’exécute pas.

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Sorties

System.Object