gpt4 book ai didi

powershell - powershell 中 ForEach 和 ForEach-Object 的区别

转载 作者:行者123 更新时间:2023-12-02 23:03:42 28 4
gpt4 key购买 nike

ForEachForEach-Object 之间有什么区别吗?

我有一个像这样的小代码,工作正常

$txt = Get-Content 'C:\temp\000.txt'
$result = foreach ($line in $txt) {$line.replace(".ini","")}
$result | out-file 'c:\temp\001.txt'

但是如果我使用“ForEach-Object”,则会出现错误......

$txt = Get-Content 'C:\temp\000.txt'
$result = foreach-object ($line in $txt) {$line.replace(".ini","")}
$result | out-file 'c:\temp\001.txt'

为什么?以及如何使用 ForEach-Object

输出循环结果

最佳答案

它们是用于不同目的的不同命令。 ForEach-Object cmdlet 在管道中使用,您可以使用 $PSItem 或 $_ 来引用当前对象,以便运行 {scriptblock},如下所示:

1..5 | ForEach-Object {$_}

>1
>2
>3
>4
>5

现在,您还可以在行的开头使用看起来非常相似的关键字,ForEach。在这种情况下,您可以运行一个 {scriptblock},在其中定义变量名称,如下所示:

ForEach ($number in 1..5){$number}
>1
>2
>3
>4
>5

这里的核心区别在于您使用命令的位置,一个是在管道中使用,而另一个则启动自己的管道。在生产风格脚本中,我建议使用 ForEach 关键字而不是 cmdlet。

关于powershell - powershell 中 ForEach 和 ForEach-Object 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148462/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com