Wygląda na to, że operacja% uruchamia bloki skryptu po potoku, chociaż about_Script_Blocks wskazuje, że% nie jest potrzebny.
To wszystko działa dobrze.
get-childitem | % { write-host $_.Name }
{ write-host 'hello' }
% { write-host 'hello' }
Ale kiedy dodajemy blok skryptu po potoku, najpierw musimy mieć%.
get-childitem | { write-host $_.Name }
powershell
syntax
Shaun Luttin
źródło
źródło
Odpowiedzi:
W przypadku użycia w kontekście polecenia cmdlet (takiego jak w przykładzie) jest to alias dla
ForEach-Object
:W przypadku użycia w kontekście równania jest to operator modułu :
a jako operator modułu
%
może być również używany w operatorze przypisania (%=
):źródło
Post PowerShell - znaki specjalne i tokeny zawiera opis wielu symboli, w tym
%
źródło
ForEach-Object
.ForEach
jest także aliasem forForEach-Object
- z wyjątkiem sytuacji, gdy jest używany na początku instrukcji, gdzie jest to słowo kluczowe kontroli pętli (jakwhile
).%
można zastąpić, które nie będą działać bez rozszerzenia lub .Get-ChildItem |
ForEach-Object
{ write-host $_.Name }
%
ForEach-Object
źródło