qshinoの日記

Powershell関係と徒然なこと

関数戻り値

Powershell functionの戻り値はとっても面倒。

 

まずは下記を読んでみて下さい。

http://winscript.jp/powershell/253

 

特に、『実はPowerShell関数内で値が出力されると、returnキーワードがついてなくてもすべて呼び出し元に出力されるという仕様なのです。そしてPowerShellにおけるreturnキーワードの効果は「後続処理を打ち切って呼び出し元に戻る。ただしreturnの後に値が指定してあればそれを最後の値として戻す」となります。そのため、呼び出し元に返したくない出力が関数内にある場合は、すべて[void]にキャストしたり|Out-Nullとしてリダイレクトするなどして出力を破棄する必要があるのです。』

 

大変じゃないですか?

 

関数内の途中で、不要な出力を全て破棄しないと出力してしまう。こんなのやってられないと思った方はいませんか?

 

例えば、下記の様な関数が、new-itemの結果も出力されてしまう。

function poi {

new-item "poi"

return $true

}

 

出力して欲しく無ければ、

[void]new-item "poi"

とかの廃棄処理を付けないといけない。こんなのやってられない!と思いませんか?