タスク(タスクスケジューラ)を、PowerShellで実行する(修正版)
#Run Registerd Task $TaskService = New-Object -ComObject Schedule.Service $TaskService.Connect('ServerName') $RootFolder = $TaskService.GetFolder('\') $Task=$RootFolder.GetTask('TaskName') $Task.Run(1) #wait for task termination do { write-host "Running" start-sleep -Seconds 2 }until($task.state -ne 4) #Eval Result if($task.LastTaskResult -eq 0) { write-host "Success" exit 0 } else { write-host "Fail" exit 0 }
コマンドで実行するなら
schtasks /RUN /S <サーバー名> /TN <タスク名>
だが、コマンドは実行トリガーを発行した時点で終了してしまう。
ステータスと処理結果は、schtasks /Query の繰り返しで取得することもできるが、プロンプトの書式をいちいちパースするのはスマートではない。TaskServiceをハンドリングする方がEasy。