PowerShell でオブジェクトをパイプできる件

PowerShellのパイプは、オブジェクト自体を受け渡せるらしいのだが、これはPythonなどのスクリプト言語では普通の動作で、PowerShell

> ls|sort

と書く部分は、関数呼び出しやメソッド呼び出しを使って、

ls().sort()

などと書く。ただし、ls()や, sort() はdirhandle, __gt__, __lt__ などを使って、独自に実装する必要がある。 これは、文字列と違ってオブジェクトでは、個々の振る舞いを指定しなくてはいけないためで、Unix shell よりも使い方はより難しい。


Unixのパイプは異なるプロセスをつないでいるため、文字列しか受け渡せないが、その分まぎれが少ない。


Unixスクリプティングを計画する時には、Shellにするか、Pythonにするかで迷うことがよくあるのだが、PowerShellは見た目よりもPythonよりだと考えた方がよさそうだ。