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 auf der Configuration Manager-Website auszuführen. Configuration Manager Abfragen definieren einen WMI Query Language-Ausdruck (WQL), 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 Typen 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-Websitelaufwerk aus, z. PS XYZ:\>B. . 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 angezeigt, um dieselbe Abfrage auszuführen und die Ergebnisse anzuzeigen.

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 angezeigt, um dieselbe Abfrage auszuführen und die Ergebnisse anzuzeigen.

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.

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

-DisableWildcardHandling

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

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

-ForceWildcardHandling

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

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

-Id

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

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

-InputObject

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

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

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

-Name

Geben Sie den Namen der auszuführenden Abfrage an.

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

-WhatIf

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

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

Eingaben

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Ausgaben

System.Object