重複の可能性:
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#に精通している人に説明してもらえますか?特別なキーワードですか?コマンドレットに渡されるスクリプトブロックでのみ使用できますか?ForEach-Object(または他のコマンドレット)にパイプせずに呼び出すにはどうすればよいですか?すなわち:
& { $_.Name } (dir)[0]
?