ForEach确实是ForEach-Object(Powershell)的别名

问题描述 投票:0回答:1

ForEach被记录为ForEach-Object的别名。当我使用Get-Alias ForEach时,它表明它是ForEach-Object的别名。

但是

  • [ForEach-Object接受诸如Begin Process和End的参数,其中ForEach不接受它们。

    • 当我们不带任何内容调用ForEach-Object时,它会提示输入参数Process,而在调用ForEach时会留下带有>>的嵌套提示。

    • [%ForEach的行为相同,但ForEach-Object不相同。

我的问题是:

  • ForEach真的是ForEach-Object的别名吗?

  • 哪个更好,ForEachForEach-Object

请分享您的想法。

谢谢!

powershell foreach alias
1个回答
1
投票

两个不同的基础结构

  • ForEach-Object cmdlet

    • 此cmdlet具有内置的别名名称:ForEach-Object,恰好与唯一的foreach statement的名称匹配(请参阅下一点)。
  • foreach 循环语句(类似于较少使用的foreach语句)。

foreach指的是取决于解析上下文-参见for

  • argument模式中(在command的上下文中,foreachabout_Parsing的别名。

  • 表达式模式中(在这种情况下,更严格地说是语句模式),about_Parsingforeach 循环语句


作为cmdlet,ForEach-Object管道输入上操作。

  • 使用它以流处理方式处理其他命令的输出,逐个对象,因为接收到这些对象。

作为一种语言声明,foreach循环在变量和表达式上操作(可能包括从命令收集的输出)。

  • 使用它来有效处理内存中已收集的结果;这样做比通过foreach进行处理要快得多。
© www.soinside.com 2019 - 2024. All rights reserved.