Freigeben über


Invoke-CMWmiQuery

Führen Sie eine WMI-Abfrage aus.

Syntax

Invoke-CMWmiQuery
      [-Context <Hashtable>]
      [-Option <QueryOptions>]
      [-Query] <String>
      [-DisableWildcardHandling]
      [-ForceWildcardHandling]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CMWmiQuery
      -ClassName <String>
      [-Context <Hashtable>]
      [-Option <QueryOptions>]
      -Search <SmsProviderSearch>
      [-DisableWildcardHandling]
      [-ForceWildcardHandling]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Beschreibung

Das Cmdlet Invoke-CMWmiQuery führt eine WMI-Abfrage (Windows Management Instrumentation) aus. Im Gegensatz zu anderen Abfrage-Cmdlets oder -Tools sind mit diesem Cmdlet die Verbindung und der Namespace bereits für Sie eingerichtet.

Sie können dieses Cmdlet auch verwenden, um eine Abfrage mit WMI Query Language (WQL) zu erstellen. Configuration Manager verwendet WQL für Abfragen in Sammlungen. WQL ähnelt SQL, verwendet aber weiterhin den SMS-Anbieter und hält sich daher an rollenbasierte Zugriffssteuerungen.

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: Ausführen einer WQL-Abfrage

Der erste Befehl erstellt eine WQL-Abfrage und speichert sie in der variablen $WQL . Der zweite Befehl führt die in der Variablen gespeicherte Abfrage aus.

$WQL = @"
SELECT app.* FROM SMS_ApplicationLatest AS app
INNER JOIN SMS_CIContentPackage AS con ON app.CI_ID=con.CI_ID
INNER JOIN SMS_DistributionPoint AS srv ON con.PackageID=srv.PackageID
WHERE app.IsHidden = 0
"@

Invoke-CMWmiQuery -Query $WQL -Option Lazy

Beispiel 2: Ausführen einer WMI-Abfrage für Gerätesammlungen

Der erste Befehl erstellt ein Suchobjekt und speichert das Objekt in der variablen $Search .

Der zweite Befehl gibt an, dass die Suchreihenfolge nach CollectionID aufsteigend ist.

Der dritte Befehl fügt suchparameter zum $Search-Objekt hinzu. In diesem Fall sucht die Abfrage nach Gerätesammlungen.

Der letzte Befehl führt die in $Search gespeicherte Abfrage aus. Es gibt SMS_Collection als die Klasse an, die die CollectionID-Eigenschaft enthält.

$Search = [Microsoft.ConfigurationManagement.PowerShell.Provider.SmsProviderSearch]::new()
$Search.AddOrder("CollectionID", [Microsoft.ConfigurationManagement.PowerShell.Provider.SearchParameterOrderBy]::Asc)
$Search.Add("Name","DeviceCol*", $True)

Invoke-CMWmiQuery -Search $Search -ClassName "SMS_Collection" -Option Lazy

Beispiel 3: Ausführen einer WMI-Abfrage für Websites nach Status

Der erste Befehl löscht die Suchparameter aus allen vorhandenen Suchobjekten.

Der zweite Befehl fügt suchparameter zum $Search-Objekt hinzu. In diesem Fall sucht die Abfrage nach Websites.

Der letzte Befehl führt die in $Search gespeicherte Abfrage aus. Sie gibt SMS_Site als Klasse an, die die Status-Eigenschaft der Website enthält.

$Search.Clear()
$Search.Add("Status", $True)

Invoke-CMWmiQuery -ClassName "SMS_Site" -Search $Search

Beispiel 4: Ausführen einer WMI-Abfrage für Websites anhand des Namens

Der erste Befehl löscht die Suchparameter aus allen vorhandenen Suchobjekten.

Der zweite Befehl fügt suchparameter zum $Search-Objekt hinzu. In diesem Fall sucht die Abfrage nach Websites.

Der letzte Befehl führt die in $Search gespeicherte Abfrage aus. Sie gibt SMS_Site als die Klasse an, die die SiteName-Eigenschaft enthält.

$Search.Clear()
$Search.Add("SiteName", $null, [Microsoft.ConfigurationManagement.PowerShell.Provider.SearchParameterOperator]::NotEquals)

Invoke-CMWmiQuery -ClassName "SMS_Site" -Search $Search

Beispiel 5: Ausführen einer WMI-Abfrage für Anwendungen

Der erste Befehl löscht die Suchparameter aus allen vorhandenen Suchobjekten.

Der zweite Befehl fügt suchparameter zum $Search-Objekt hinzu. In diesem Fall sucht die Abfrage nach Anwendungen.

Der letzte Befehl führt die in $Search gespeicherte Abfrage aus. Es gibt SMS_Application als Klasse an, die die Website CI_ID-Eigenschaft enthält.

$Search.Clear()
$Search.AddAdhoc("CI_ID > 0")

Invoke-CMWmiQuery -ClassName "SMS_Application" -Search $Search -Option Lazy

Parameter

-ClassName

Gibt die Configuration Manager-WMI-Klasse an, die Sie abfragen möchten.

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

-Confirm

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

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

-Context

Geben Sie den WMI-Kontext als Hashtabelle an. Es handelt sich um eine Liste von Name-Wert-Paaren, die an einen WMI-Anbieter übergeben werden, der Kontextinformationen für einen benutzerdefinierten Vorgang unterstützt.

Typ:Hashtable
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

-Option

Die häufigste Option ist Fast.

Geben Sie eine Abfrageoption an:

  • None:Vorgabe
  • Lazy: Standardmäßig lädt das Cmdlet verzögerte Eigenschaften.
  • Fast: Verwenden Sie diese Option, um keine verzögerten Eigenschaften zu laden. Diese Option kann für einige Klassen schneller Ergebnisse zurückgeben.
  • ExpectResults ExpectResultsThrowException& : Wenn die Abfrage keine Ergebnisse zurückgibt, lösen Sie eine Ausnahme aus. Diese Ausnahme beendet in der Regel ein Skript.
  • FastExpectResults LazyExpectResults&: Diese Optionen kombinieren Fast und Lazy mit ExpectResults.
  • ExpectResultsSoftFail: Wenn die Abfrage keine Ergebnisse zurückgibt, geben Sie einen Fehler aus, beenden Sie das Skript jedoch nicht.

Weitere Informationen zu verzögerten Eigenschaften finden Sie unter Verzögerte Eigenschaften von Configuration Manager.

Die folgenden Werte sind nur für die interne Verwendung vorgesehen:

  • Klonen
  • NoMask
  • NoRefresh
  • IgnoreNoResults
Typ:QueryOptions
Aliase:Options
Zulässige Werte:None, NoRefresh, Lazy, Fast, ExpectResults, FastExpectResults, LazyExpectResults, Clone, ExpectResultsSoftFail, ExpectResultsThrowException, NoMask, IgnoreNoResults
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Query

Gibt eine WMI Query Language (WQL)-Anweisung an.

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

Gibt ein SMSProviderSearch-Objekt an.

Typ:SmsProviderSearch
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:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Ausgaben

IResultObject[]

IResultObject