Кажется, что операция% запускает блоки сценария после конвейера, хотя about_Script_Blocks указывает, что% не требуется.
Все это прекрасно работает.
get-childitem | % { write-host $_.Name }
{ write-host 'hello' }
% { write-host 'hello' }
Но когда мы добавляем блок скрипта после конвейера, нам сначала нужно иметь%.
get-childitem | { write-host $_.Name }
powershell
syntax
Шон Латтин
источник
источник
Ответы:
При использовании в контексте командлета (например, в вашем примере) это псевдоним для
ForEach-Object
:При использовании в контексте уравнения это оператор модуля :
и как оператор модуля,
%
также может использоваться в операторе присваивания (%=
):источник
Сообщение PowerShell - Специальные символы и токены содержит описание нескольких символов, включая
%
источник
ForEach-Object
.ForEach
также является псевдонимом дляForEach-Object
- кроме случаев, когда он используется в начале оператора, где это ключевое слово управления циклом (например,while
).%
может заменить который не будет работать без либо или .Get-ChildItem |
ForEach-Object
{ write-host $_.Name }
%
ForEach-Object
источник