Sdílet prostřednictvím


about_Simplified_Syntax

Krátký popis

Popisuje jednodušší a přirozenější způsoby skriptování filtrů pro kolekce objektů.

Dlouhý popis

Zjednodušená syntaxe zavedená ve Windows PowerShellu 3.0 umožňuje vytvářet některé příkazy filtru bez použití bloků skriptů. Zjednodušená syntaxe se více podobá přirozenému jazyku a je primárně užitečná u kolekcí objektů, které se dostanou do příkazů Where-Object a ForEach-Object jejich odpovídající aliasy where a foreach.

Metodu můžete použít u členů kolekce (nejčastěji pole) bez odkazování na automatickou proměnnou $_ uvnitř bloku skriptu.

Zvažte následující dvě vyvolání:

Standardní syntaxe

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }

Poznámka:

V druhém příkazu je GetKeyAlgorithm metoda volána pro každý objekt v kolekci. Pokud objekt přijatý z kanálu nemá metodu GetKeyAlgorithm , příkaz vytvoří chybu.

Zjednodušená syntaxe

Ve zjednodušené syntaxi se operátory porovnání, které pracují na členech objektů v kolekci, implementují jako parametry. Můžete také vyvolat metodu u objektů v kolekci, aniž byste odkazovali na automatickou proměnnou $_ uvnitř bloku skriptu. Porovnejte následující dvě vyvolání se standardními příklady syntaxe:

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -MemberName GetKeyAlgorithm

Vzhledem k tomu, že parametry Property a MemberName jsou poziční, můžete je z příkazu vynechat. Pomocí aliasů můžete příkazy dále zjednodušit:

dir Cert:\LocalMachine\Root | where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm

I když obě syntaxe fungují, zjednodušená syntaxe vrací výsledky bez odkazování na automatickou proměnnou $_ uvnitř bloku skriptu. Zjednodušená syntaxe se čte spíše jako příkaz přirozeného jazyka a může být srozumitelnější.

Název GetKeyAlgorithm metody se předává jako argument pro parametr MemberName parametru ForEach-Object. Při vyvolání metody pomocí zjednodušené syntaxe je volána metoda pro každý objekt v kanálu pouze v případě, že tento objekt má tuto metodu. Proto se zobrazí stejné výsledky, ale bez chyb.

V dalším příkladu Descriptionse předá parametru MemberName parametru ForEach-Object. Příkaz zobrazí popis každého objektu System.Diagnostics.Process vráceného objektem Get-Process.

Get-Process | foreach Description

V tomto příkladu se název GetFiles metody předá parametru příkazu. Hodnota .* se předá parametru ArgumentList . Metoda GetFiles() je volána s parametrem .* vzoru vyhledávání pro každý System.IO.DirectoryInfo objekt vrácený Get-ChildItem.

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

Viz také