Freigeben über


Where-Object

Wählt Objekte aus einer Auflistung basierend auf ihren Eigenschaftswerten aus.

Syntax

Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     [-EQ]
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-FilterScript] <ScriptBlock>
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -Match
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CEQ
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -NE
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CNE
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -GT
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CGT
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -LT
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CLT
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -GE
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CGE
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -LE
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CLE
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -Like
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CLike
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -NotLike
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CNotLike
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CMatch
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -NotMatch
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CNotMatch
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -Contains
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CContains
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -NotContains
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CNotContains
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -In
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CIn
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -NotIn
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -CNotIn
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -Is
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     [[-Value] <Object>]
     -IsNot
     [<CommonParameters>]
Where-Object
     [-InputObject <PSObject>]
     [-Property] <String>
     -Not
     [<CommonParameters>]

Beschreibung

Das Where-Object Cmdlet wählt Objekte mit bestimmten Eigenschaftswerten aus der Auflistung von Objekten aus, die an das Objekt übergeben werden. Sie können z. B. das Where-Object Cmdlet verwenden, um Dateien auszuwählen, die nach einem bestimmten Datum, Ereignissen mit einer bestimmten ID oder Computern erstellt wurden, die eine bestimmte Version von Windows verwenden.

Ab Windows PowerShell 3.0 gibt es zwei verschiedene Möglichkeiten zum Erstellen eines Where-Object Befehls.

  • Skriptblock. Sie können einen Skriptblock verwenden, um den Namen der Eigenschaft, einen Vergleichsoperator und einen Eigenschaftswert anzugeben. Where-Object gibt alle Objekte zurück, für die die Skriptblock-Anweisung wahr ist.

    Der folgende Befehl ruft z. B. Prozesse in der Normal Prioritätsklasse ab, d. h. Prozesse, bei denen der Wert der PriorityClass-Eigenschaft gleich ist Normal.

    Get-Process | Where-Object {$_.PriorityClass -eq "Normal"}

    Alle PowerShell-Vergleichsoperatoren sind im Skriptblockformat gültig. Weitere Informationen finden Sie unter about_Comparison_Operators.

  • Comparison-Anweisung. Sie können auch eine Vergleichsanweisung schreiben, was der natürlichen Sprache sehr viel ähnlicher ist. Vergleichsanweisungen wurden in Windows PowerShell 3.0 eingeführt.

    Beispielsweise erhalten die folgenden Befehle auch Prozesse mit einer Prioritätsklasse von Normal. Diese Befehle sind gleichwertig, und Sie können sie austauschbar verwenden.

    Get-Process | Where-Object -Property PriorityClass -EQ -Value "Normal"

    Get-Process | Where-Object PriorityClass -EQ "Normal"

    Ab Windows PowerShell 3.0 Where-Object werden Vergleichsoperatoren als Parameter in einem Where-Object Befehl hinzugefügt. Sofern nicht anders angegeben, wird bei allen Operatoren die Groß-und Kleinschreibung nicht berücksichtigt. Vor Windows PowerShell 3.0 konnten die Vergleichsoperatoren in der PowerShell-Sprache nur in Skriptblöcken verwendet werden.

Wenn Sie eine einzelne Eigenschaft Where-Objectangeben, behandelt das Cmdlet den Wert der Eigenschaft als booleschen Ausdruck. Wenn der Wert der Länge der Eigenschaft nicht null ist, wird der Ausdruck als $trueausgewertet. Beispiel: ('hi', '', 'there') | Where-Object Length

Das vorherige Beispiel entspricht funktionell folgendem:

  • ('hi', '', 'there') | Where-Object Length -GT 0
  • ('hi', '', 'there') | Where-Object { $_.Length -gt 0 }

Weitere Informationen dazu, wie PowerShell boolescher Werte auswertet, finden Sie unter about_Booleans.

Beispiele

Beispiel 1: Get stopped services

Diese Befehle erhalten eine Liste aller Dienste, die beendet werden. Die $_ automatische Variable stellt jedes Objekt dar, das an das Where-Object Cmdlet übergeben wird.

Der erste Befehl verwendet das Skriptblockformat, der zweite Befehl verwendet das Vergleichsanweisungsformat. Die Befehle filtern die Dienste auf die gleiche Weise und geben dieselbe Ausgabe zurück. Nur die Syntax unterscheidet sich.

Get-Service | Where-Object { $_.Status -eq "Stopped" }
Get-Service | Where-Object Status -EQ "Stopped"

Beispiel 2: Abrufen von Prozessen basierend auf dem Arbeitssatz

Diese Befehle listen Prozesse auf, die einen Arbeitssatz haben, der größer als 250 MB ist. Die Befehle filtern die Prozesse auf die gleiche Weise und geben dieselbe Ausgabe zurück. Nur die Syntax unterscheidet sich.

Get-Process | Where-Object { $_.WorkingSet -GT 250MB }
Get-Process | Where-Object WorkingSet -GT 250MB

Beispiel 3: Abrufen von Prozessen basierend auf dem Prozessnamen

Diese Befehle rufen die Prozesse ab, die einen ProcessName-Eigenschaftswert aufweisen, der mit dem Buchstaben pbeginnt. Mit dem Operator "Match " können Sie Übereinstimmungen mit regulären Ausdrücken verwenden.

Die Befehle filtern die Prozesse auf die gleiche Weise und geben dieselbe Ausgabe zurück. Nur die Syntax unterscheidet sich.

Get-Process | Where-Object { $_.ProcessName -Match "^p.*" }
Get-Process | Where-Object ProcessName -Match "^p.*"

Beispiel 4: Verwenden des Vergleichsanweisungsformats

In diesem Beispiel wird gezeigt, wie Sie das neue Vergleichsanweisungsformat des Where-Object Cmdlets verwenden.

Der erste Befehl verwendet das Vergleichsanweisungsformat. Sie verwendet keine Aliase und enthält den Namen für jeden Parameter.

Der zweite Befehl stellt eine natürlichere Verwendung des Vergleichsbefehlsformats dar. Der Befehl ersetzt den where Alias für den Where-Object Cmdlet-Namen und lässt alle optionalen Parameternamen aus.

Die Befehle filtern die Prozesse auf die gleiche Weise und geben dieselbe Ausgabe zurück. Nur die Syntax unterscheidet sich.

Get-Process | Where-Object -Property Handles -GE -Value 1000
Get-Process | where Handles -GE 1000

Beispiel 5: Abrufen von Befehlen basierend auf Eigenschaften

In diesem Beispiel wird veranschaulicht, wie Sie Befehle schreiben können, mit denen Elemente zurückgegeben werden, die „true“ oder „false“ sind oder die einen beliebigen Wert für eine angegebene Eigenschaft aufweisen. Jedes Beispiel zeigt sowohl das Skriptblock- als auch das Vergleichsanweisungsformat für den Befehl.

Die Befehle filtern ihre Eingabe auf die gleiche Weise und geben dieselbe Ausgabe zurück. Nur die Syntax unterscheidet sich.

# Use Where-Object to get commands that have any value for the OutputType
# property of the command. This omits commands that do not have an OutputType
# property and those that have an OutputType property, but no property value.
Get-Command | Where-Object OutputType
Get-Command | Where-Object { $_.OutputType }

# Use Where-Object to get objects that are containers. This gets objects that
# have the **PSIsContainer** property with a value of $True and excludes all
# others.
Get-ChildItem | Where-Object PSIsContainer
Get-ChildItem | Where-Object { $_.PSIsContainer }

# Finally, use the -not operator (!) to get objects that are not containers.
# This gets objects that do have the **PSIsContainer** property and those
# that have a value of $False for the **PSIsContainer** property.
Get-ChildItem | Where-Object -Not PSIsContainer
Get-ChildItem | Where-Object { !$_.PSIsContainer }

Beispiel 6: Verwenden mehrerer Bedingungen

Get-Module -ListAvailable | Where-Object {
    ($_.Name -notlike "Microsoft*" -and $_.Name -notlike "PS*") -and $_.HelpInfoUri
}

In diesem Beispiel wird gezeigt, wie Sie einen Where-Object Befehl mit mehreren Bedingungen erstellen.

Dieser Befehl ruft Nicht-Kern-Module ab, die die aktualisierbare Hilfefunktion unterstützen. Der Befehl verwendet den Parameter ListAvailable des Get-Module Cmdlets, um alle Module auf dem Computer abzurufen. Ein Pipelineoperator (|) sendet die Module an das Where-Object Cmdlet, das Module abruft, deren Namen nicht mit Microsoft oder PSbeginnen und einen Wert für die HelpInfoURI-Eigenschaft aufweisen, die PowerShell angibt, wo aktualisierte Hilfedateien für das Modul gefunden werden sollen. Der -and logische Operator verbindet die Vergleichsanweisungen.

Im Beispiel wird das Skriptblock-Befehlsformat verwendet. Logische Operatoren, z -and. B. ,-or, und -not sind nur in Skriptblöcken gültig. Sie können sie nicht im Vergleichsanweisungsformat eines Where-Object Befehls verwenden.

Parameter

-CContains

Gibt an, dass dieses Cmdlet Objekte aus einer Auflistung abruft, wenn der Eigenschaftswert des Objekts eine genaue Übereinstimmung für den angegebenen Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Beispiel: Get-Process | Where-Object ProcessName -CContains "svchost"

CContains bezieht sich auf eine Auflistung von Werten und ist true, wenn die Auflistung ein Element enthält, das eine genaue Übereinstimmung für den angegebenen Wert darstellt. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, konvertiert PowerShell sie in eine Auflistung eines Objekts.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CEQ

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert mit dem angegebenen Wert identisch ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CGE

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert größer oder gleich dem angegebenen Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CGT

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert größer als der angegebene Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CIn

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert den angegebenen Wert enthält. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Beispiel: Get-Process | Where-Object -Value "svchost" -CIn ProcessName

CIn ähnelt CContains, außer dass die Eigenschafts- und Wertpositionen umgekehrt werden. Die folgenden Anweisungen sind z. B. beide „true“.

"abc", "def" -CContains "abc"

"abc" -CIn "abc", "def"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CLE

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert kleiner oder gleich dem angegebenen Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CLike

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert einem Wert entspricht, der Wildcardzeichen (*) enthält. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Beispiel: Get-Process | Where-Object ProcessName -CLike "*host"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CLT

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert kleiner als der angegebene Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CMatch

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert mit dem angegebenen regulären Ausdruck übereinstimmt. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, wird der übereinstimmende Wert in der $Matches automatischen Variablen gespeichert.

Beispiel: Get-Process | Where-Object ProcessName -CMatch "Shell"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CNE

Gibt an, dass dieses Cmdlet Objekte abruft, wenn sich der Eigenschaftswert von dem angegebenen Wert unterscheidet. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CNotContains

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert des Objekts keine genaue Übereinstimmung für den angegebenen Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Beispiel: Get-Process | Where-Object ProcessName -CNotContains "svchost"

NotContains und CNotContains verweisen auf eine Auflistung von Werten und sind wahr, wenn die Auflistung keine Elemente enthält, die eine genaue Übereinstimmung für den angegebenen Wert sind. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, konvertiert PowerShell sie in eine Auflistung eines Objekts.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CNotIn

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert keine genaue Übereinstimmung für den angegebenen Wert ist. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Beispiel: Get-Process | Where-Object -Value "svchost" -CNotIn -Property ProcessName

NotIn- und CNotIn-Operatoren ähneln NotContains und CNotContains, mit der Ausnahme, dass die Eigenschafts- und Wertpositionen umgekehrt werden. Die folgenden Anweisungen sind z. B. „true“.

"abc", "def" -CNotContains "Abc"

"abc" -CNotIn "Abc", "def"

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

-CNotLike

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert nicht mit einem Wert übereinstimmt, der Wildcardzeichen enthält. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet.

Beispiel: Get-Process | Where-Object ProcessName -CNotLike "*host"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-CNotMatch

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert nicht mit dem angegebenen regulären Ausdruck übereinstimmt. Bei diesem Vorgang wird die Groß-/Kleinschreibung beachtet. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, wird der übereinstimmende Wert in der $Matches automatischen Variablen gespeichert.

Beispiel: Get-Process | Where-Object ProcessName -CNotMatch "Shell"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-Contains

Gibt an, dass dieses Cmdlet Objekte abruft, wenn ein Element im Eigenschaftswert des Objekts eine genaue Übereinstimmung für den angegebenen Wert ist.

Beispiel: Get-Process | Where-Object ProcessName -Contains "Svchost"

Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, konvertiert PowerShell sie in eine Auflistung eines Objekts.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-EQ

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert mit dem angegebenen Wert identisch ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-FilterScript

Gibt den Skriptblock an, der zum Filtern der Objekte verwendet wird. Schließen Sie den Skriptblock in geschweifte Klammern ({}) ein.

Der Parametername FilterScript ist optional.

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

-GE

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert größer oder gleich dem angegebenen Wert ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-GT

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert größer als der angegebene Wert ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-In

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert mit einem der angegebenen Werte übereinstimmt. Zum Beispiel:

Get-Process | Where-Object -Property ProcessName -in -Value "Svchost", "TaskHost", "WsmProvHost"

Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, konvertiert PowerShell sie in eine Auflistung eines Objekts.

Wenn der Eigenschaftswert eines Objekts ein Array ist, verwendet PowerShell die Referenzgleichheit, um eine Übereinstimmung zu ermitteln. Where-Object gibt das Objekt nur zurück, wenn der Wert des Property-Parameters und ein beliebiger Wert von Value dieselbe Instanz eines Objekts sind.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-InputObject

Gibt die zu filternden Objekte an. Sie können die Objekte auch an Where-Object.

Wenn Sie den InputObject-Parameter mit Where-Object, anstelle von Befehlsergebnissen Where-Objectan die Leitung, verwenden, behandelt das Cmdlet das InputObject als einzelnes Objekt. Dies gilt auch dann, wenn es sich bei dem Wert um eine Auflistung handelt, die das Ergebnis eines Befehls ist, z -InputObject (Get-Process). B. .

Da InputObject einzelne Eigenschaften aus einem Array oder einer Auflistung von Objekten nicht zurückgeben kann, empfehlen wir, dass Sie Where-Object , wie in den Beispielen in diesem Thema gezeigt, eine Auflistung von Objekten für objekte mit bestimmten Werten in definierten Eigenschaften filtern Where-Object .

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

-Is

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert eine Instanz des angegebenen .NET-Typs ist. Schließen Sie den Typnamen in eckige Klammern ein.

Beispiel: Get-Process | Where-Object StartTime -Is [DateTime]

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-IsNot

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert keine Instanz des angegebenen .NET-Typs ist.

Beispiel: Get-Process | where StartTime -IsNot [DateTime]

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-LE

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert kleiner oder gleich dem angegebenen Wert ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-Like

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert einem Wert entspricht, der Wildcardzeichen (*) enthält.

Beispiel: Get-Process | Where-Object ProcessName -Like "*host"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-LT

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert kleiner als der angegebene Wert ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-Match

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert mit dem angegebenen regulären Ausdruck übereinstimmt. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, wird der übereinstimmende Wert in der $Matches automatischen Variablen gespeichert.

Beispiel: Get-Process | Where-Object ProcessName -Match "shell"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-NE

Gibt an, dass dieses Cmdlet Objekte abruft, wenn sich der Eigenschaftswert von dem angegebenen Wert unterscheidet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-Not

Gibt an, dass dieses Cmdlet Objekte abruft, wenn die Eigenschaft nicht vorhanden ist oder einen Wert von $null oder $falsehat.

Beispiel: Get-Service | Where-Object -Not "DependentServices"

Dieser Parameter wurde in Windows PowerShell 6.1 eingeführt.

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

-NotContains

Gibt an, dass dieses Cmdlet Objekte abruft, wenn keines der Elemente im Eigenschaftswert eine genaue Übereinstimmung für den angegebenen Wert ist.

Beispiel: Get-Process | Where-Object ProcessName -NotContains "Svchost"

NotContains bezieht sich auf eine Auflistung von Werten und ist true, wenn die Auflistung keine Elemente enthält, die eine genaue Übereinstimmung für den angegebenen Wert sind. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, konvertiert PowerShell sie in eine Auflistung eines Objekts.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-NotIn

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert keine genaue Übereinstimmung für einen der angegebenen Werte ist.

Beispiel: Get-Process | Where-Object -Value "svchost" -NotIn -Property ProcessName

Wenn es sich bei dem Wert um ein einzelnes Objekt handelt, konvertiert PowerShell ihn in eine Auflistung eines Objekts.

Wenn der Eigenschaftswert eines Objekts ein Array ist, verwendet PowerShell die Referenzgleichheit, um eine Übereinstimmung zu ermitteln. Where-Object gibt das Objekt nur zurück, wenn der Wert von Property und ein beliebiger Wert von Value nicht die gleiche Instanz eines Objekts sind.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-NotLike

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert nicht mit einem Wert übereinstimmt, der Wildcardzeichen (*) enthält.

Beispiel: Get-Process | Where-Object ProcessName -NotLike "*host"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-NotMatch

Gibt an, dass dieses Cmdlet Objekte abruft, wenn der Eigenschaftswert nicht mit dem angegebenen regulären Ausdruck übereinstimmt. Wenn es sich bei der Eingabe um ein einzelnes Objekt handelt, wird der übereinstimmende Wert in der $Matches automatischen Variablen gespeichert.

Beispiel: Get-Process | Where-Object ProcessName -NotMatch "PowerShell"

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-Property

Gibt den Namen einer Eigenschaft des Eingabeobjekts an. Die Eigenschaft muss eine Instanzeigenschaft sein, keine statische Eigenschaft. Dies ist ein Positionsparameter, sodass der Name , Property" optional ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

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

-Value

Gibt einen Eigenschaftswert an. Der Parametername "Value" ist optional. Dieser Parameter akzeptiert Bei Verwendung mit den folgenden Vergleichsparametern Wildcardzeichen:

  • CLike
  • CNotLike
  • Like
  • NotLike

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Typ:PSObject
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:True

Eingaben

PSObject

Sie können jedes Objekt an dieses Cmdlet weiterleiten.

Ausgaben

Object

Dieses Cmdlet gibt die ausgewählten Elemente aus dem Eingabeobjektsatz zurück.

Hinweise

PowerShell enthält die folgenden Aliase für Where-Object:

  • Alle Plattformen:
    • ?
    • where

Ab Windows PowerShell 4.0 Where ForEach wurden Methoden für die Verwendung mit Sammlungen hinzugefügt.

Weitere Informationen zu diesen Methoden finden Sie hier about_arrays