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


3

내가 이것을 실행할 때 :

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

나는 이것을 얻는다 :

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

상태 만 검색 할 수있는 방법이 있습니까?

답변:


4

실제로를 사용해야하는 경우가 아니라면 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 행과 관련된 모든 것에 대한 훌륭한 참조 자료.
  • for / f- 다른 명령의 결과에 대한 루프 명령.
  • schtasks- 예약 된 작업 / 작업을 생성 / 편집합니다. 로컬 또는 원격 컴퓨터에서 작업을 생성 할 수 있습니다.

이것을 시도했다. space이름이 없는 작업에만 적합 합니다. 작업 이름에 공백이 있으면 작동하지 않습니다. 아직 시도하지는 않았지만 tokens출력에서 공백을 계산 하여 값 을 조정하려고하면 작동 할 수 있습니다 .
Sandeep


감사합니다. 예약 된 작업에 공백이있는 경우 토큰 수를 조정하십시오 (예 :for /f "usebackq skip=3 tokens=7" %a in (`schtasks.exe /query /tn "Refresh Dashboard Cache"`) do @echo %a
wp78de


2

시도 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^

0

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

0

나는 이것에 대한 좋은 대답을 찾았고, 가까운 곳을 찾았습니다. 내가 끝내었던 것은 다음과 같습니다.

$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) PowerShell입니까? 질문 (및 많은 답변)이 CMD를 언급 할 때 답변에서 PowerShell을 사용한다고 명시 적으로 언급하는 것이 좋습니다. (2) 이미 몇 가지 PowerShell 답변이 있습니다. 하나는 사용 Get-ScheduledTask하고 다른 하나는 사용합니다 (schtasks /query …) -split. 당신의 대답은 그것보다 어떻게 더 낫습니까? 의견에 응답하지 마십시오.  명확하고 완전하게 답변을 편집 하십시오.
Scott

0

다음은 이름에 공백이있는 작업 이름에도 적용됩니다.

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) ( /format csv)를 출력 하고을 사용할 delims=,때 공백은 더 이상 중요하지 않습니다. /nh" n o h eader"를 나타내므로 필요 없습니다 skip=.


-1

출력 형식을 CSV로 변경 /fo csv하려면 schtasks명령에 추가하십시오 .

그런 다음 CSVFix 를 사용 하여 -f 3인수로 필수 열을 필터링 하고로 필드 이름 레코드를 건너 뜁니다 -ifn.

schtasks.exe /query /tn "GoogleUpdateTaskMachineUA" | csvfix order -ifn -f 3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.