似乎%操作在管道之后启动脚本块,尽管about_Script_Blocks表示%isn不是必需的。
这些都很好用。
get-childitem | %{ write-host $_.Name }
{ write-host 'hello' }
%{ write-host 'hello' }
但是当我们在管道之后添加一个脚本块时,我们需要先得到%。
get-childitem | { write-host $_.Name }
答案 0 :(得分:120)
在cmdlet(例如您的示例)的上下文中使用时,它是ForEach-Object
的别名:
> Get-Alias -Definition ForEach-Object
CommandType Name Definition
----------- ---- ----------
Alias % ForEach-Object
Alias foreach ForEach-Object
在等式的上下文中使用时,它是modulus operator:
> 11 % 5
1
并且作为模数运算符,%
也可用于assignment operator(%=
):
> $this = 11
> $this %= 5
> $this
1
答案 1 :(得分:8)
帖子PowerShell - Special Characters And Tokens
提供多个符号的描述,包括%
% (percentage)
1. Shortcut to foreach.
Task: Print all items in a collection.
Solution.
... | % { Write-Host $_ }
2. Remainder of division, same as Mod in VB.
Example:
5 % 2
答案 2 :(得分:2)
%可以取代Get-ChildItem |
ForEach-Object
{ write-host $_.Name }
并且不能没有%
或 ForEach-Object