可能是重复问题:
在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)的情况下调用它?例如:
& { $_.Name } (dir)[0]
?