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
Mit dem Cmdlet Where-Object
werden Objekte ausgewählt, die bestimmte Eigenschaftswerte aus der Auflistung von Objekten aufweisen, die an das Cmdlet übergeben werden. Sie können z. B. das Cmdlet Where-Object
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 Eigenschaftennamen, einen Vergleichsoperator und einen Eigenschaftswert anzugeben.
Where-Object
gibt alle Objekte zurück, für die die Skriptblock-Anweisung wahr ist.Beispielsweise ruft der folgende Befehl Prozesse in der
Normal
Prioritätsklasse ab, d. h. Prozesse, bei denen der Wert der PriorityClass -Eigenschaft gleichNormal
ist.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, die viel ähnlich wie natürliche Sprache ist. Vergleichsanweisungen wurden in Windows PowerShell 3.0 eingeführt.
Mit den folgenden Befehlen werden beispielsweise auch Prozesse abgerufen, die eine Prioritätsklasse von
Normal
aufweisen. 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 fügt
Where-Object
Vergleichsoperatoren als Parameter in einemWhere-Object
-Befehl hinzu. Sofern nicht angegeben, werden bei allen Operatoren die Groß-/Kleinschreibung nicht beachtet. Vor Windows PowerShell 3.0 konnten die Vergleichsoperatoren in der PowerShell-Sprache nur in Skriptblöcken verwendet werden.
Wenn Sie ein einzelnes Property- zum Where-Object
bereitstellen, behandelt das Cmdlet den Wert der Eigenschaft als booleschen Ausdruck. Wenn der Wert der Length der Eigenschaft nicht null ist, wird der Ausdruck als $true
ausgewertet. 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 Cmdlet Where-Object
ü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 p
beginnt. 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 cmdlets Where-Object
verwenden.
Der erste Befehl verwendet das Format der Vergleichsanweisung. Sie verwendet keine Aliase und enthält den Namen für jeden Parameter.
Der zweite Befehl ist die natürlichere Verwendung des Vergleichsbefehlsformats. Der Befehl ersetzt den where
Alias für den Namen des cmdlets Where-Object
und übergibt alle optionalen Parameternamen.
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 gezeigt, wie Befehle geschrieben werden, die Elemente zurückgeben, die wahr oder falsch sind oder 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 Nichtkernmodule ab, die das Feature "Aktualisierbare Hilfe" unterstützen. Der Befehl verwendet den Parameter ListAvailable des Cmdlets Get-Module
, um alle Module auf dem Computer abzurufen. Ein Pipelineoperator (|
) sendet die Module an das cmdlet Where-Object
, das Module abruft, deren Namen nicht mit Microsoft
oder PS
beginnen und einen Wert für die HelpInfoURI--Eigenschaft aufweisen, die PowerShell angibt, wo aktualisierte Hilfedateien für das Modul zu finden sind. Der logische Operator -and
verbindet die Vergleichsanweisungen.
Im Beispiel wird das Skriptblock-Befehlsformat verwendet. Logische Operatoren wie -and
,-or
und -not
sind nur in Skriptblöcken gültig. Sie können sie nicht im Vergleichsanweisungsformat eines Where-Object
Befehls verwenden.
- Weitere Informationen zu logischen PowerShell-Operatoren finden Sie unter about_Logical_Operators.
- Weitere Informationen zum Feature "Aktualisierbare Hilfe" finden Sie unter about_Updatable_Help.
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. "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 mit einem Wert übereinstimmt, 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 auf eine Auflistung von Werten verweisen und wahr sind, 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
Operatoren "NotIn" und "CNotIn" ähneln NotContains und CNotContains, außer dass die Eigenschafts- und Wertpositionen umgekehrt werden. Die folgenden Anweisungen sind beispielsweise "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 alle Werte 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
pfeifen.
Wenn Sie den parameter InputObject mit Where-Object
verwenden, anstatt Befehlsergebnisse an Where-Object
zu übergeben, behandelt das Cmdlet die InputObject- als einzelnes Objekt. Dies gilt auch, wenn es sich bei dem Wert um eine Auflistung handelt, die das Ergebnis eines Befehls ist, z. B. -InputObject (Get-Process)
.
Da InputObject- einzelne Eigenschaften aus einem Array oder einer Auflistung von Objekten nicht zurückgeben kann, empfehlen wir, dass Sie, wie in den Beispielen in diesem Thema gezeigt, Where-Object
verwenden, wenn Sie Where-Object
verwenden, um eine Auflistung von Objekten für objekte zu filtern, die bestimmte Werte in definierten Eigenschaften aufweisen.
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 mit einem Wert übereinstimmt, 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 $false
aufweist.
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 der Wert von Value ein einzelnes Objekt ist, 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 jeder 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 Propertyoptional 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 Valueist optional. Dieser Parameter akzeptiert Bei Verwendung mit den folgenden Vergleichsparametern Wildcardzeichen:
- CLike
- CNotLike-
- Gefällt mir
- 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
Sie können jedes Objekt an dieses Cmdlet weiterleiten.
Ausgaben
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 wurden Where
- und ForEach
Methoden für die Verwendung mit Sammlungen hinzugefügt.
Weitere Informationen zu diesen Methoden finden Sie hier about_arrays