メモす

学びしことを忘れぬようメモす

エラーメッセージって分かりやすい?

落とし穴があったので、メモす。

Invoke-Command-ScriptBlock で実行している結果を変数に格納して、 return で返そうとした。 最初はうまくいっていたが、処理を増やしていったら途中で動かなくなった。エラーメッセージは以下の通り。

'op_Addition' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。

一読しただけではよく分からず、ぐぐってみることに。 合致する件数は少なかったが、参考になる記事があった。

【引用元】

https://qiita.com/SGTY/items/15e56a7efb4d079d5b67

なるほど、配列ではないのに連結しようとしたから怒られたっぽい。 調査開始。 GetType().BaseType で型の種類を調べた。 その結果、コマンドプロンプトのコマンドの実行結果は System.Array になるが、 PowerShellのコマンドレットの実行結果は System.Object になるようだ。 @() で包んであげることにした。

ちなみにコマンドにしてもコマンドレットにしても、表示される実行結果1行が配列の1要素として格納される。 コマンドの場合、空行も1要素になるので注意。 コマンドレットでは、1~2行目に表示されるカラム名のようなものは要素としてカウントされない。

以上。ありがたき幸せ。