ForEach
被记录为ForEach-Object
的别名。当我使用Get-Alias ForEach
时,它表明它是ForEach-Object
的别名。
但是
[ForEach-Object
接受诸如Begin Process和End的参数,其中ForEach
不接受它们。
当我们不带任何内容调用ForEach-Object
时,它会提示输入参数Process,而在调用ForEach
时会留下带有>>
的嵌套提示。
[%
和ForEach
的行为相同,但ForEach-Object
不相同。
我的问题是:
ForEach
真的是ForEach-Object
的别名吗?
哪个更好,ForEach
或ForEach-Object
?
请分享您的想法。
谢谢!
有两个不同的基础结构:
ForEach-Object
cmdlet
ForEach-Object
,恰好与唯一的foreach
statement的名称匹配(请参阅下一点)。foreach
循环语句(类似于较少使用的foreach
语句)。
foreach
指的是取决于解析上下文-参见for
:
在argument模式中(在command的上下文中,foreach
是about_Parsing
的别名。
在表达式模式中(在这种情况下,更严格地说是语句模式),about_Parsing
是foreach
循环语句。
作为cmdlet,ForEach-Object
在管道输入上操作。
作为一种语言声明,foreach
循环在变量和表达式上操作(可能包括从命令收集的输出)。
foreach
进行处理要快得多。