schtasks를 사용하여 예약된 작업의 상태를 어떻게 검색할 수 있나요?

schtasks를 사용하여 예약된 작업의 상태를 어떻게 검색할 수 있나요?

내가 이것을 실행할 때 :

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

나는 이것을 얻습니다 :

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

상태만 검색할 수 있는 방법이 있나요?

답변1

자세한 출력 및 목록 형식 옵션을 schtasks /query사용해 보십시오 . 그런 다음 명령을 사용하여 결과를 필터링합니다 ./v/fo listfind

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

추가 자료

  • Windows CMD 명령줄의 AZ 인덱스- Windows cmd 라인과 관련된 모든 것에 대한 훌륭한 참고 자료입니다.
  • /f에 대해- 다른 명령의 결과에 대해 명령을 반복합니다.
  • Schtasks- 예약된 작업/작업을 생성/편집합니다. 작업은 로컬 또는 원격 컴퓨터에서 생성될 수 있습니다.

답변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

관련 정보