これを実行すると:
schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"
私はこれを手に入れます:
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA N/A Disabled
ステータスのみを取得する方法はありますか?
本当に使用する必要がない限り、schtasks.exe
、PowerShellとその優れた出力およびフォーマットオプションをすべて使用します。
Get-ScheduledTask | ? TaskName -eq GoogleUpdateTaskMachineUA | Select State | ft -AutoSize
または
(Get-ScheduledTask | Where TaskName -eq GoogleUpdateTaskMachineUA ).State
次のコマンドを使用します。
for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a
ノート:
skip=3
-ヘッダー行を無視しますtokens=4
-4番目のトークン(ステータス列の値)を取得します%a
を%%a
に置き換えます使用例:
F:\test>schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA 03/02/2016 12:17:00 Ready
F:\test>for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a
Ready
詳細な出力にはschtasks /query
オプションを、リスト形式には/v
を使用して/fo list
を試してください。次に、find
コマンドで結果をフィルタリングします。
schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list | find "Status:"
あなたはこのような文字列を取得します
Status: Running
ステータスの値を抽出するには、for
コマンドを使用します。
for /f "delims=: tokens=2" %a in ('schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list ^| find "Status:"') do @echo %a
%a
を%%a
に置き換えます。for
コマンドで|
や>
などの記号をエスケープするには、^
を使用しますWindows 7を使用してPowershellスクリプトを作成していて、_Get-ScheduledTask
_を使用できない場合は、次の使用を検討できます。
$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]
次のようになります。
_### Running this:
schtasks /query /S 'yourServer' /TN yourTask
### Leads to the output below.
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
yourTask N/A Running
### Running this:
$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]
Write-Host "$($status)"
### Leads to the output below
Running
_
私はこれに対する良い答えを探しました、そして、私を親しくするいくつかのことがわかりました。結局、次のようになります。
$taskName="SomeTask"
$serverName="yourserver"
$status = (schtasks.exe /query /tn "$taskName" /s $serverName /v /fo CSV | ConvertFrom-Csv | Select-Object -Property "Status").Status
タスクのすべてのアイテムが必要な場合は、次のようなことができます...
$task= schtasks.exe /query /tn "$taskName" /s $serverName /v /fo CSV | ConvertFrom-Csv | Select-Object
次に、操作するプロパティを選択できます...
$task.Status
$task."Last Result"
スペースを含むプロパティは引用符で囲んでください。
明確にするために、Get-ScheduledTaskが利用できない場合、私の応答はPowershellを使用しています。これは、Windows 7またはWindows Server 2008を実行している場合はそうではありません。1つの答えはステータスを取得する方法を提供しますが、このメソッドは理解しやすく、使いやすい。さらに、誰かが予定されているタスクの他のプロパティを取得することに興味がある場合、そのプロパティがどの列にあるかを解析する必要はありません。要するに、私の答えは[〜#〜] i [〜 #〜]が探していたので、他の気のある人たちと共有したいと思いました。
次の例は、名前にスペースが含まれているタスク名でも機能します。
for /f "tokens=3 delims=," %a in ('schtasks.exe /query /tn "GoogleUpdateTaskMachineUA" /fo csv /nh') do echo %~a
Csv(c omma s eparated v alues)(/fo
rmat csv
)およびdelims=,
、スペースは関係ありません。 /nh
は "n o h eader"を表すので、skip=
。