about_Simplified_Syntax
Kurze Beschreibung
Beschreibt einfachere, natürlichere Arten von Skriptfiltern für Auflistungen von Objekten.
Lange Beschreibung
Mit der in Windows PowerShell 3.0 eingeführten vereinfachten Syntax können Sie einige Filterbefehle erstellen, ohne Skriptblöcke zu verwenden. Die vereinfachte Syntax ähnelt der natürlichen Sprache und ist in erster Linie nützlich bei Auflistungen von Objekten, die in Befehle Where-Object
weitergeleitet werden, oder ForEach-Object
deren entsprechende Aliase where
und foreach
.
Sie können eine Methode für die Elemente einer Auflistung (am häufigsten ein Array) verwenden, ohne auf die automatische Variable $_
innerhalb eines Skriptblocks zu verweisen.
Betrachten Sie die folgenden beiden Aufrufe:
Standardsyntax
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }
Hinweis
Im zweiten Befehl wird die GetKeyAlgorithm
Methode für jedes Objekt in der Auflistung aufgerufen. Wenn das von der Pipeline empfangene Objekt keine Methode aufweist GetKeyAlgorithm
, erzeugt der Befehl einen Fehler.
Vereinfachte Syntax
Unter der vereinfachten Syntax werden Vergleichsoperatoren, die an Elementen von Objekten in einer Auflistung arbeiten, als Parameter implementiert. Außerdem können Sie eine Methode für Objekte in einer Auflistung aufrufen, ohne auf die automatische Variable $_
innerhalb eines Skriptblocks zu verweisen. Vergleichen Sie die folgenden beiden Aufrufe mit den Standardsyntaxbeispielen:
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
ForEach-Object -MemberName GetKeyAlgorithm
Da die Parameter Property und MemberName positional sind, können Sie sie aus dem Befehl weglassen. Mithilfe von Aliasen können Sie die Befehle weiter vereinfachen:
dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm
Während beide Syntaxen funktionieren, gibt die vereinfachte Syntax Ergebnisse zurück, ohne auf die automatische Variable $_
innerhalb eines Skriptblocks zu verweisen. Die vereinfachte Syntax liest mehr wie eine Natürliche Sprachausweisung und kann leichter verständlich sein.
Der Methodenname GetKeyAlgorithm
wird als Argument für den MemberName-Parameter von ForEach-Object
übergeben. Wenn Sie die Methode mit der vereinfachten Syntax aufrufen, wird die Methode nur für jedes Objekt in der Pipeline aufgerufen, wenn dieses Objekt über diese Methode verfügt. Daher erhalten Sie dieselben Ergebnisse, aber ohne Fehler.
Im nächsten Beispiel Description
wird an den MemberName-Parameter von ForEach-Object
. Der Befehl zeigt die Beschreibung der einzelnen system.Diagnostics.Process-Objekte an, die von Get-Process
.
Get-Process | foreach Description
In diesem Beispiel wird der Methodenname GetFiles
an den MemberName-Parameter des ForEach-Object
Befehls übergeben. Der .*
Wert wird an den ArgumentList-Parameter übergeben. Die GetFiles()
Methode wird mit dem Suchmusterparameter .*
für jedes system.IO.DirectoryInfo -Objekt aufgerufen, das von Get-ChildItem
.
Get-ChildItem /home -Directory | foreach GetFiles .*