エラーメッセージって分かりやすい?
落とし穴があったので、メモす。
Invoke-Command
の -ScriptBlock
で実行している結果を変数に格納して、 return
で返そうとした。
最初はうまくいっていたが、処理を増やしていったら途中で動かなくなった。エラーメッセージは以下の通り。
'op_Addition' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。
一読しただけではよく分からず、ぐぐってみることに。 合致する件数は少なかったが、参考になる記事があった。
【引用元】
なるほど、配列ではないのに連結しようとしたから怒られたっぽい。
調査開始。 GetType().BaseType
で型の種類を調べた。
その結果、コマンドプロンプトのコマンドの実行結果は System.Array
になるが、
PowerShellのコマンドレットの実行結果は System.Object
になるようだ。
@()
で包んであげることにした。
ちなみにコマンドにしてもコマンドレットにしても、表示される実行結果1行が配列の1要素として格納される。 コマンドの場合、空行も1要素になるので注意。 コマンドレットでは、1~2行目に表示されるカラム名のようなものは要素としてカウントされない。
以上。ありがたき幸せ。