Freigeben über


Invoke-CMQuery

Führen Sie eine Configuration Manager-Abfrage aus.

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

Beschreibung

Verwenden Sie dieses Cmdlet, um eine Abfrage am Configuration Manager-Standort auszuführen. Configuration Manager-Abfragen definieren einen WQL-Ausdruck (WMI Query Language), um Informationen aus der Standortdatenbank basierend auf den von Ihnen angegebenen Kriterien abzurufen. WQL ähnelt SQL, überläuft aber weiterhin den SMS-Anbieter und nicht direkt in die Datenbank. Daher hält sich WQL weiterhin an Ihre rollenbasierte Zugriffskonfiguration.

Wenn Sie eine Abfrage ausführen, verarbeitet die Website den WQL-Ausdruck und gibt die Ergebnisse in PowerShell zurück. Je nach Struktur der WQL-Anweisung kann das Format der Ergebnisse variieren.

Abfragen können die meisten Arten von Configuration Manager-Objekten zurückgeben, z. B. Computer, Standorte, Sammlungen, Anwendungen und Bestandsdaten. Weitere Informationen finden Sie unter Einführung in Abfragen in Configuration Manager.

Hinweis

Führen Sie Configuration Manager-Cmdlets auf dem Configuration Manager-Standortlaufwerk aus, z. B PS XYZ:\>. . Weitere Informationen finden Sie unter Erste Schritte.

Beispiele

Beispiel 1: Anzeigen und Ausführen einer Standardabfrage

Dieses Beispiel zeigt zunächst das Cmdlet Get-CMQuery , um die Eigenschaften der Standardabfrage Diese Website und deren Unterwebsites anzuzeigen.

Anschließend wird das Cmdlet Invoke-CMQuery zum Ausführen der gleichen Abfrage und zum Anzeigen der Ergebnisse angezeigt.

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

Beachten Sie in der Ausgabe des Cmdlets Get-CMQuery , dass der WQL-Ausdruck einfach ist. Es wählt vier Attribute aus einer einzelnen Klasse aus.

Beachten Sie dann, dass die Ausgabe des Cmdlets Invoke-CMQuery eine einfache Tabelle ist.

Beispiel 2: Anzeigen und Ausführen einer komplexen Abfrage

Dieses Beispiel zeigt zunächst das Cmdlet Get-CMQuery , um die Eigenschaften einer benutzerdefinierten Abfrage anzuzeigen.

Anschließend wird das Cmdlet Invoke-CMQuery zum Ausführen der gleichen Abfrage und zum Anzeigen der Ergebnisse angezeigt.

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

Diese Abfrage verfügt über einen komplexeren Ausdruck , der zwei Klassen verknüpft. Das Ergebnis der Abfrage ist dann komplexer.

Parameter

-Confirm

Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-DisableWildcardHandling

Dieser Parameter behandelt Wildcardzeichen als Literalzeichenwerte. Sie können es nicht mit ForceWildcardHandling kombinieren.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ForceWildcardHandling

Dieser Parameter verarbeitet Wildcardzeichen und kann zu unerwartetem Verhalten führen (nicht empfohlen). Sie können es nicht mit DisableWildcardHandling kombinieren.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Id

Geben Sie die ID der auszuführenden Abfrage an. Beispiel: "XYZ00006".

Typ:String
Aliase:QueryId
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-InputObject

Geben Sie ein auszuführende Abfrageobjekt an. Verwenden Sie zum Abrufen dieses Objekts das Cmdlet Get-CMQuery .

Typ:IResultObject
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-LimitToCollectionId

Wenn die Abfrage so konfiguriert ist, dass sie zur Eingabe der einschränkenden Sammlung auffordert, verwenden Sie diesen Parameter, um eine Sammlungs-ID anzugeben. Wenn die LimitToCollectionID-Eigenschaft der Abfrage ist <Prompt>und Sie diesen Parameter beim Ausführen der Abfrage nicht einschließen, schlägt das Cmdlet fehl.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Name

Geben Sie den Namen der auszuführenden Abfrage an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WhatIf

Zeigt, was passieren würde, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Ausgaben

System.Object