about_Simplified_Syntax

Krótki opis

Opisuje łatwiejsze, bardziej naturalne sposoby tworzenia skryptów filtrów dla kolekcji obiektów.

Długi opis

Uproszczona składnia, wprowadzona w programie Windows PowerShell 3.0, umożliwia tworzenie niektórych poleceń filtru bez użycia bloków skryptów. Uproszczona składnia bardziej przypomina język naturalny i jest przydatna przede wszystkim w przypadku kolekcji obiektów, które są przesyłane potokiem do poleceń i odpowiadających im aliasów Where-Objectwhere i ForEach-Objectforeach.

Można użyć metody na elementach członkowskich kolekcji (najczęściej tablicy) bez odwoływania się do zmiennej $_ automatycznej wewnątrz bloku skryptu.

Rozważ następujące dwa wywołania:

Składnia Standardowa

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

Uwaga

W drugim poleceniu metoda jest wywoływana GetKeyAlgorithm dla każdego obiektu w kolekcji. Jeśli obiekt otrzymany z potoku nie ma GetKeyAlgorithm metody, polecenie generuje błąd.

Uproszczona składnia

W ramach uproszczonej składni operatory porównania, które działają na elementach członkowskich obiektów w kolekcji, są implementowane jako parametry. Ponadto można wywołać metodę dla obiektów w kolekcji bez odwoływania się do zmiennej $_ automatycznej wewnątrz bloku skryptu. Porównaj następujące dwa wywołania ze standardowymi przykładami składni:

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

Ponieważ parametry Property i MemberName są pozycyjne, można je pominąć za pomocą polecenia . Za pomocą aliasów można jeszcze bardziej uprościć polecenia:

dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm

Chociaż obie składnie działają, uproszczona składnia zwraca wyniki bez odwoływania się do zmiennej $_ automatycznej wewnątrz bloku skryptu. Uproszczona składnia odczytuje bardziej jak instrukcję języka naturalnego i może być łatwiejsza do zrozumienia.

Nazwa GetKeyAlgorithm metody jest przekazywana jako argument parametru MemberName klasy ForEach-Object. Podczas wywoływania metody przy użyciu uproszczonej składni metoda jest wywoływana dla każdego obiektu w potoku tylko wtedy, gdy ten obiekt ma tę metodę. W związku z tym uzyskujesz te same wyniki, ale bez błędów.

W następnym przykładzie Description parametr MemberName jest przekazywany do parametru ForEach-Object. Polecenie wyświetla opis każdego obiektu System.Diagnostics.Process zwróconego przez Get-Processpolecenie .

Get-Process | foreach Description

W tym przykładzie nazwa GetFiles metody jest przekazywana do parametru ForEach-Object MemberName polecenia. Wartość .* jest przekazywana do parametru ArgumentList . Metoda jest wywoływana GetFiles() przy użyciu parametru .* wzorca wyszukiwania dla każdego obiektu System.IO.DirectoryInfo zwróconego przez Get-ChildItemelement .

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

Zobacz też