Freigeben über


about_Simplified_Syntax

Kurzbeschreibung

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 Skriptblocks 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 und ForEach-Object oder deren entsprechenden Aliase where und foreachweitergeleitet werden.

Sie können eine Methode für die Elemente einer Auflistung (am häufigsten ein Array) verwenden, ohne auf die automatische Variable $_ innerhalb eines Scriptblocks 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() }

Anmerkung

Im zweiten Befehl wird die GetKeyAlgorithm-Methode für jedes Objekt in der Auflistung aufgerufen. Wenn das von der Pipeline empfangene Objekt keine GetKeyAlgorithm Methode aufweist, 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 Scriptblocks 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 Scriptblocks zu verweisen. Die vereinfachte Syntax liest sich mehr wie eine natürliche Sprachäußerung 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 wird Description an den MemberName Parameter von ForEach-Objectübergeben. ** Der Befehl zeigt die Beschreibung der einzelnen System.Diagnostics.Process Objekte an, die von Get-Processzurückgegeben werden.

Get-Process | foreach Description

In diesem Beispiel wird der Methodenname GetFiles an den MemberName Parameter des Befehls ForEach-Object übergeben. Der .* Wert wird an den ArgumentList Parameter übergeben. Die GetFiles()-Methode wird mit dem Suchmusterparameter .* für jedes von zurückgegebene Get-ChildItem-Objekt aufgerufen.

Get-ChildItem /home -Directory | foreach GetFiles .*

Siehe auch