読者です 読者をやめる 読者になる 読者になる

【System Center Orchestrator】PowerShellスクリプトの実行が終わらない

System Center Orchestratorの「プログラムの実行」というアクティビティからPowerShellを実行する方法があります。


こんな感じでコマンドの欄にPowerShell.exeから入力して実行すればPowerShellスクリプトファイルを実行できます。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\xxxxx\xxxx\PowershellScriptFile.ps1



しかし、設定は合っているはずでPowerShellの処理も動くのですが、
処理が完了してもRunbookが完了しないで実行中のままになるという状況にはまりました。
例えばこんな簡単な一行のPowerShellスクリプトで一瞬で終わるはずなのに、10分待てどRunbookが実行中のまま終わらない状態になってしまいました。

$result = 1 + 1

解決策

どうもこの「プログラムの実行」というアクティビティはコマンドの標準出力を見て完了と判断するようです。
つまり、PowerShellの処理の最後になんでも良いので出力してあげればアクティビティが完了します。

例えば上の例だったら、$resultの変数を最後に出力してあげるとか、

$result = 1 + 1
$result

極論言えば、こんな感じでも良いわけです。

$result = 1 + 1
"完了"