Condividi tramite


Invoke-CMQuery

Eseguire una query di Configuration Manager.

Sintassi

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>]

Descrizione

Usare questo cmdlet per eseguire una query nel sito di Configuration Manager. Le query di Configuration Manager definiscono un'espressione WQL (WMI Query Language) per ottenere informazioni dal database del sito in base ai criteri specificati. WQL è simile a SQL, ma passa comunque attraverso il provider SMS anziché direttamente al database. WQL rimane quindi in base alla configurazione degli accessi in base al ruolo.

Quando si esegue una query, il sito elabora l'espressione WQL e restituisce i risultati in PowerShell. A seconda della struttura dell'istruzione WQL, il formato dei risultati può variare.

Le query possono restituire la maggior parte dei tipi di oggetti di Configuration Manager, tra cui computer, siti, raccolte, applicazioni e dati di inventario. Per altre informazioni, vedere Introduzione alle query in Configuration Manager.

Nota

Eseguire i cmdlet di Configuration Manager dall'unità del sito di Configuration Manager, ad esempio PS XYZ:\>. Per altre informazioni, vedere Introduzione.

Esempio

Esempio 1: Visualizzare ed eseguire una query predefinita

Questo esempio mostra innanzitutto il cmdlet Get-CMQuery per visualizzare le proprietà della query predefinita This Site e dei relativi siti secondari.

Viene quindi visualizzato il cmdlet Invoke-CMQuery per eseguire la stessa query e visualizzare i risultati.

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

Si noti nell'output del cmdlet Get-CMQuery che l'espressione WQL è semplice. Seleziona quattro attributi da una singola classe.

Si noti quindi come l'output del cmdlet Invoke-CMQuery sia una tabella semplice.

Esempio 2: Visualizzare ed eseguire una query complessa

Questo esempio mostra innanzitutto il cmdlet Get-CMQuery per visualizzare le proprietà di una query personalizzata.

Viene quindi visualizzato il cmdlet Invoke-CMQuery per eseguire la stessa query e visualizzare i risultati.

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

Questa query ha un'espressione più complessa che unisce due classi. Il risultato della query è quindi più complesso.

Parametri

-Confirm

Richiede la conferma prima di eseguire il cmdlet.

Tipo:SwitchParameter
Alias:cf
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-DisableWildcardHandling

Questo parametro considera i caratteri jolly come valori letterali. Non è possibile combinarlo con ForceWildcardHandling.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ForceWildcardHandling

Questo parametro elabora caratteri jolly e può causare un comportamento imprevisto (non consigliato). Non è possibile combinarlo con DisableWildcardHandling.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Id

Specificare l'ID della query da eseguire. Ad esempio, "XYZ00006".

Tipo:String
Alias:QueryId
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-InputObject

Specificare un oggetto query da eseguire. Per ottenere questo oggetto, usare il cmdlet Get-CMQuery .

Tipo:IResultObject
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-LimitToCollectionId

Se la query è configurata per richiedere la raccolta di limitazione, usare questo parametro per specificare un ID raccolta. Se la proprietà LimitToCollectionID della query è <Prompt>e non si include questo parametro quando si esegue la query, il cmdlet ha esito negativo.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Name

Specificare il nome della query da eseguire.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-WhatIf

Mostra cosa accade se viene eseguito il cmdlet. Il cmdlet non viene eseguito.

Tipo:SwitchParameter
Alias:wi
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Output

System.Object