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