如何使用 schtasks 檢索計劃任務的狀態?

如何使用 schtasks 檢索計劃任務的狀態?

當我運行這個時:

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

我明白了:

Folder: \
TaskName                                 Next Run Time          Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA                N/A                    Disabled

有沒有辦法只檢索狀態?

答案1

嘗試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^

答案2

除非您確實必須使用schtasks.exe,否則請使用 PowerShell 及其所有進階輸出和格式選項:

Get-ScheduledTask | ? TaskName -eq GoogleUpdateTaskMachineUA | Select State | ft -AutoSize

或者

(Get-ScheduledTask | Where TaskName -eq GoogleUpdateTaskMachineUA ).State

答案3

有沒有辦法只檢索狀態?

使用以下命令:

for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a

筆記:

  • skip=3- 忽略標題行
  • tokens=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

進一步閱讀

答案4

如果您正在使用 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

相關內容