ForEach-Objectって・・・
「ForEach-Object」コマンドレットって、C#の「foreach」と違って、「GetEnumerator」メソッドを呼び出しているわけじゃないんやね。
その証拠にこれができない。
# 一文字ずつ表示 PS > "Hello" | foreach { Write-Output $_ } Hello # 本当はこう出て欲しい H e l l o
あとこれも、「Hashtable」はforeachができない。「Keys」か「Values」プロパティを使う必要がある。
# これはエラー PS > @{ a=100; b=200 } | foreach { Write-Output ("Key={0}, Value={1}" -f $_.Key, $_.Value) }
両方とも「GetEnumerator」を呼び出していれば、問題なく動作するのに。
「ForEach-Object」は、配列とコレクションにしか対応していないのは何故?