PowerShell中"%"(百分比)的作用是什么?

Sha*_*tin 92 syntax powershell

似乎%操作在管道之后启动脚本块,尽管about_Script_Blocks表示%不是必需的.

这一切都很好.

get-childitem | %{ write-host $_.Name }

{ write-host 'hello' }

%{ write-host 'hello' }
Run Code Online (Sandbox Code Playgroud)

但是当我们在管道之后添加一个脚本块时,我们需要首先使用%.

get-childitem | { write-host $_.Name }
Run Code Online (Sandbox Code Playgroud)

Koh*_*brr 129

在cmdlet(例如您的示例)的上下文中使用时,它是以下别名ForEach-Object:

> Get-Alias -Definition ForEach-Object

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           %                                                   ForEach-Object
Alias           foreach                                             ForEach-Object
Run Code Online (Sandbox Code Playgroud)

当在方程的上下文中使用时,它是模数运算符:

> 11 % 5

1
Run Code Online (Sandbox Code Playgroud)

并且作为模数运算符,%也可以在赋值运算符(%=)中使用:

> $this = 11
> $this %= 5
> $this

1
Run Code Online (Sandbox Code Playgroud)

  • 在Foreach-Object的情况下,我建议不要使用"%"符号 - 这使得人们更难以阅读/维护您的代码 - 特别是刚接触PS的人.让我们面对现实,拿起PS的人越多越好. (13认同)
  • 一旦它还包含 % 角色作为不同上下文中的模数运算符,我会将其标记为答案。 (2认同)

MiF*_*vil 9

一篇文章PowerShell - 特殊字符和标记
提供多个符号的描述,包括%

% (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
Run Code Online (Sandbox Code Playgroud)

  • @ShaunLuttin:该值是一个链接,描述了多个特殊字符,包括% (5认同)

Xao*_*Xao 8

%可以替换,如果没有或 ,则无法工作。Get-ChildItem | ForEach-Object { write-host $_.Name }%ForEach-Object