“%”(百分比)在PowerShell中做什么?


106

似乎%操作在管道之后启动了脚本块,尽管about_Script_Blocks表示不需要%。

这些都很好。

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

{ write-host 'hello' }

% { write-host 'hello' }

但是,当我们在管道之后添加脚本块时,我们需要先拥有%。

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

2
您是否尝试过搜索“ powershell百分号”
PeeHaa 2014年

17
您可能还尝试过Get-Help%
mjolinor 2014年

7
@mjolinor这很有用。我不知道我可以在符号方面获得帮助。我看到我们也可以使用get-help查找$ _。那很棒!
Shaun Luttin 2014年

1
它也是模运算符!只是在这种情况下
Cole9350 '04

41
@PeeHaa您的建议会在这里提出。
NiloCK,2015年

Answers:


144

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

> Get-Alias -Definition ForEach-Object

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           %                                                   ForEach-Object
Alias           foreach                                             ForEach-Object

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

> 11 % 5

1

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

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

1

2
一旦它还包含%在不同上下文中作为模数运算符的角色,我将其标记为答案。
Shaun Luttin 2014年

1
添加了方程式和赋值运算符示例
Kohlbrr 2014年

17
对于Foreach-Object,我建议不要使用“%”符号-这会使人们更难以阅读/维护您的代码-特别是PS新手。面对现实,选择PS的人越多越好。
西蒙·卡特林

1
在MSDN的正式文档中,哪里可以找到ForEach-Object的含义?
rightfold

我不同意西蒙·卡特琳(Simon Catlin)的观点,按照我们的逻辑,我们都应该使用汇编语言,因为其余的只是语法糖
reggaeguitar

16

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

7
@ShaunLuttin:该值是一个链接,它描述了多个特殊字符,包括%
Michael Freidgeim

从技术上讲,它是的别名ForEach-ObjectForEach也是-的别名ForEach-Object-除非在语句的开头使用,否则它是循环控制关键字(如while)。
mwfearnley '18

4

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.