Freigeben über


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 .*

Siehe auch