PowerShellのHashTableの場合、そのままだとパイプラインでForeachやWhere句を通しても意図した通りの処理ができません。
PS>$hashTable = @{a=1;b=2} PS>$hashTable | ForEach-Object{$_.Name + ":" + $_.Value} :
GetEnumeratorで列挙用オブジェクトを取り出してからパイプラインに渡すと意図した通りに動きます。
PS>$hashTable = @{a=1;b=2} PS>$hashTable.GetEnumerator() | ForEach-Object{$_.Name + ":" + $_.Value} a:1 b:2
他にもこんな方法もあります。
Hashtableをforeachしても・・・ - PowerShell Scripting Weblog