Wie kann ich mit Schtasks den Status einer geplanten Aufgabe abrufen?

Wie kann ich mit Schtasks den Status einer geplanten Aufgabe abrufen?

Wenn ich dies ausführe:

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

Ich bekomme Folgendes:

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

Gibt es eine Möglichkeit, nur den Status abzurufen?

Antwort1

Versuchen Sie es schtasks /querymit /vder Option für ausführliche Ausgabe und /fo listfür Listenformat. Filtern Sie die Ergebnisse dann mit finddem Befehl.

schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list | find "Status:"

Sie erhalten eine Zeichenfolge wie diese

Status:         Running

Um den Statuswert zu extrahieren, verwenden Sie forden folgenden Befehl:

for /f "delims=: tokens=2" %a in ('schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list ^| find "Status:"') do @echo %a
  • Zur Verwendung in einer Batchdatei ersetzen %adurch%%a
  • Um Symbole wie |oder >im forBefehl zu maskieren, verwenden Sie^

Antwort2

Sofern Sie nicht unbedingt verwenden müssen schtasks.exe, verwenden Sie PowerShell mit all seinen hervorragenden Ausgabe- und Formatierungsoptionen:

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

oder

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

Antwort3

Gibt es eine Möglichkeit, nur den Status abzurufen?

Verwenden Sie den folgenden Befehl:

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

Anmerkungen:

  • skip=3- Ignorieren Sie die Kopfzeilen
  • tokens=4- nimm das vierte Token (den Wert in der Statusspalte)
  • Zur Verwendung in einer Batchdatei ersetzen Sie %adurch%%a

Anwendungsbeispiel:

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

Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • für /f- Befehl mit den Ergebnissen eines anderen Befehls wiederholen.
  • schtasks- Erstellen/Bearbeiten eines geplanten Jobs/einer geplanten Aufgabe. Der Job kann auf dem lokalen oder einem Remotecomputer erstellt werden.

Antwort4

Wenn Sie ein Powershell-Skript unter Windows 7 schreiben und nicht verwenden können Get-ScheduledTask, können Sie Folgendes verwenden:

$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]

Es sieht aus wie das:

### 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

verwandte Informationen