Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Popisuje jednodušší a přirozenější způsoby skriptování filtrů pro kolekce objektů.
Dlouhý popis
Zjednodušená syntaxe představená ve Windows PowerShellu 3.0 umožňuje vytvářet některé příkazy filtru bez použití skriptů. Zjednodušená syntaxe se více podobá přirozenému jazyku a je primárně užitečná s kolekcemi objektů, které se dostanou do příkazů Where-Object a ForEach-Object nebo jejich odpovídající aliasy where a foreach.
Metodu můžete použít u členů kolekce (nejčastěji pole) bez odkazu 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
Ve druhém příkazu se metoda GetKeyAlgorithm volá na 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 bez odkazování na automatickou proměnnou $_ uvnitř skriptublock. 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 vlastnosti a "členské jméno" "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ř skriptublock. Zjednodušená syntaxe se čte spíše jako příkaz přirozeného jazyka a může být srozumitelnější.
Název metody GetKeyAlgorithm se předává jako argument pro parametr MemberNameForEach-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 se Description předá parametru MemberName z ForEach-Object. Příkaz zobrazí popis každého System.Diagnostics.Process objekt vrácený Get-Process.
Get-Process | foreach Description
V tomto příkladu se název metody GetFiles předá parametru MemberName příkazu ForEach-Object. Hodnota .* se předá parametru ArgumentList argumentu. Metoda GetFiles() je volána pro každý objekt .* vrácený s parametrem vzoru vyhledávání Get-ChildItem.
Get-ChildItem /home -Directory | foreach GetFiles .*
Viz také
- o_Porovnávacích_Operátorech
- about_Foreach
- forEach-Object
- Kde-Objekt