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