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」は、配列とコレクションにしか対応していないのは何故?