可能重复:
$_ 在 powershell 中是什么意思?
我已经看过其他人关于同一主题的问答,但对我来说,它并没有回答这个问题。
我知道如何使用 Select-Object、Where-Object、ForEach-Object 等并传入一个脚本块,例如:
dir | ForEach-Object { $_.Name }
它返回当前目录中所有文件名的数组。
这类似于 C# 的 Select 扩展方法:
Dir.Select(x => x.Name)
但是,上面的 C# 很容易理解,因为我们将一个函数传递给 Select 方法,然后它会为列表中的每个元素执行它。
但是,PowerShell 中的等价物:
dir | ForEach-Object { param($x) $x.Name }
不返回任何东西。然而
& { param($x) $x.Name } (dir)[0]
按预期工作。
有人可以向熟悉 C# 但不熟悉脚本世界的人解释 $_ 的魔力吗?它是一个特殊的关键字?它只能用于传递给 cmdlet 的脚本块吗?您如何调用一个而不将一个管道传递给 ForEach-Object(或任何其他 cmdlet)?IE:
& { $_.Name } (dir)[0]
?