スケジュールされたジョブが実行されているプロセス名の正確な場所を取得する必要があります。WMIC JOB を使用してそれを取得したいのですが (他の提案があれば教えてください)、正確な方法がわかりません。いくつかのバリエーションを試しましたが、今のところうまくいきません。
どうすればいいですか?
CommandLine
以下は機能しますが、" "または" "のみが必要であり、ExecutablePath
両方ではありません。
wmic process where "ProcessID=1111" get CommandLine, ExecutablePath
次のようなものが返され、PID 1111 のプログラムが実行されている場所が示されます。
"C:\Program Files (x86)\Common Files\MyProgram\Agent\agent.exe"
ここから始めましょう。
サービスのプロセス識別子を取得するSchedule
wmic service where name='schedule' get ProcessId
ProcessId
288
親プロセス識別子がSchedule
サービスであるプロセスを取得します
wmic process where ParentProcessId=288
編集済み
Microsoft システム ジョブでは、あなたが探しているものはないと思います。
ジョブ オブジェクトを使用すると、プロセスのグループを 1 つの単位として管理できます。ジョブ オブジェクトは、関連付けられたプロセスの属性を制御する名前付け可能、セキュリティ保護可能、共有可能なオブジェクトです。ジョブ オブジェクトに対して実行される操作は、ジョブ オブジェクトに関連付けられているすべてのプロセスに影響します。たとえば、ワーキング セットのサイズやプロセスの優先度などの制限を適用したり、ジョブに関連付けられたすべてのプロセスを終了したりすることが含まれます。
プロセスを探していると思います。
あなたの質問に答えるために、スケジュール サービスによって開始されたプロセスを探します。正確な場所が必要な場合は、プロパティによって指定されますExecutablePath
。
wmic process where ParentProcessId=288 get ExecutablePath
ExecutablePath
C:\Windows\system32\wuauclt.exe
WMIC にはプログレッシブ ヘルプが組み込まれているため、どこでも使用/?
してその構文を学習できます。
C:\WINDOWS\system32>wmic
wmic:root\cli>/?
[global switches] <command>