web-dev-qa-db-ja.com

Pythonを使用してWindowsのスケジュールされたタスクのステータスを確認するにはどうすればよいですか?

Pythonを使用してWindowsのスケジュールされたタスクのステータスを確認し、タスクの名前で確認する必要があります。基本的に、タスクが実行されているかどうかを知りたいです。

答えを探しましたが、見つかりませんでした。

どうやってやるの?

編集:以下のコメントに基づいて、これを達成し、結果をある種の変数にする(たとえば、状態が「実行中」であるかどうかを確認する)ための最良の方法は次のとおりです。

"Running" in check_output(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", '-Command', '&{Get-ScheduledTask -TaskPath \* | where taskname -eq "TaskName" | select state;}'])
1

サブプロセスモジュールを使用できます。

import subprocess

subprocess.call(r'schtasks.exe /query  /tn "TASKNAME_HERE"', Shell=True)

アクセスが拒否された場合は、次のようにサーバーアドレスと資格情報を渡すために文字列を変更する必要があります。

import subprocess

subprocess.call(r'schtasks.exe /query /S 192.168.1.100 /u domain\username /P pass /tn "TASKNAME_HERE"', Shell=True)

以下で説明するように、コマンドの「状態」のみを取得するには、PowerShellを簡単に使用できます。これを試して:

import subprocess

subprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", '-Command', '&{Get-ScheduledTask -TaskPath \* | where taskname -eq "Ajustar Inventario SM" | select state;}'])

これは戻ります:

State
-----
Ready
1
Narzard