다음을 통해 공유


WMI 작업: 예약된 작업

WMI 예약 작업은 예약된 작업에 대한 정보를 만들고 가져옵니다. 다른 예제는 https://www.microsoft.com/technet의 TechNet ScriptCenter를 참조하세요.

이 항목에 표시된 스크립트 예제는 로컬 컴퓨터에서만 데이터를 가져옵니다. 스크립트를 사용하여 원격 컴퓨터에서 데이터를 가져오는 방법에 대한 자세한 내용은 원격 컴퓨터에서 WMI에 연결을 참조하세요.

다음 절차에서 스크립트를 실행하는 방법을 설명합니다.

스크립트를 실행하려면

  1. 코드를 복사하고 확장명이 .vbs인 파일(예: filename.vbs)에 저장합니다. 텍스트 편집기가 파일에 .txt 확장명을 추가하지 않는지 확인합니다.
  2. 명령 프롬프트 창을 열고 파일을 저장한 디렉터리로 이동합니다.
  3. 명령 프롬프트에 cscript filename.vbs를 입력합니다.
  4. 이벤트 로그에 액세스할 수 없는 경우 관리자 권한 명령 프롬프트에서 실행 중인지 확인합니다. 보안 이벤트 로그와 같은 일부 이벤트 로그는 UAC(사용자 액세스 제어)로 보호될 수 있습니다.

참고

기본적으로 cscript는 명령 프롬프트 창에 스크립트의 출력을 표시합니다. WMI 스크립트는 많은 양의 출력을 생성할 수 있으므로 출력을 파일로 리디렉션할 수 있습니다. 명령 프롬프트에서 cscript filename.vbs > outfile.txt를 입력하여 filename.vbs 스크립트의 출력을 outfile.txt로 리디렉션합니다.

다음 표에는 로컬 컴퓨터에서 다양한 형식의 데이터를 가져오는 데 사용할 수 있는 스크립트 예제가 나와 있습니다.

어떻게 할까요? WMI 클래스 또는 메서드
... 스크립트를 사용하여 예약된 작업을 만들 수 있나요? Win32_ScheduledJob 클래스 및 Create 메서드를 사용합니다. Windows 7 이상에서 이 작업을 수행하는 데 어려움이 있는 경우 Win32_ScheduledJob 설명 섹션을 참조하세요. 설정으로 인해 클래스를 사용하지 못할 수 있습니다.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
JobID = "Test"
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreate = objNewJob.Create _
    ("Notepad.exe", "********143000.000000-420", True , 1 OR 4 OR 16, ,True, JobId) 
If errJobCreate = 0 Then
    WScript.Echo "Job created successfully: " & VBNewLine _
        & "Notepad.exe scheduled to run repeately at 14.30 (2:30 P.M.) PST" & VBNewLine _
        & "on Mon, Wed, and Fri."
Else
    WScript.Echo "Job not created. Error code = " & errJobCreate
End If

문자열 "********143000.000000-420"(Create 메서드의 StartTime 매개 변수 값에 사용)에서, "********143000.000000"은 작업이 14.30(오후 2:30)에 시작됨을 나타내고 "-420"은 표준 시간대를 지정합니다. 표준 시간대 번호는 현지 시간 변환에 대한 현재 편차입니다. 편차는 UTC 시간과 현지 시간의 차이입니다. 표준 시간대에 대한 편차를 계산하려면 표준 시간대가 GMT(그리니치 표준시)보다 앞서거나 뒤쳐지는 시간에 60을 곱합니다(표준 시간대가 GMT보다 앞선 경우 시간 수에 양수, 표준 시간대가 GMT보다 뒤쳐지는 경우 음수 사용). 표준 시간대에서 일광 절약 시간을 사용하는 경우 계산에 60을 더 추가합니다. 예를 들어 태평양 표준 시간대는 GMT에 8시간 뒤이므로 일광 절약 시간을 사용 중인 경우 -420(-8 * 60 + 60)이고, 일광 절약 시간을 사용하지 않는 경우 -480(-8 * 60)이 됩니다. Win32_TimeZone 클래스의 bias 속성을 쿼리하여 편차 값을 확인할 수도 있습니다.

... 컴퓨터에서 예약된 모든 작업 목록을 반환합니까?

Win32_ScheduledJob 클래스를 사용합니다. 이 클래스는 스크립트 또는 AT.exe를 사용하여 만든 작업만 반환할 수 있습니다. 예약된 작업 마법사에서 만들거나 수정한 작업에 대한 정보는 반환할 수 없습니다.

VB
strComputer = "."
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery ("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
    Wscript.Echo "Command: " & objJob.Command & VBNewLine _
    & "Days Of Month: " & objJob.DaysOfMonth & VBNewLine _
    & "Days Of Week: " & objJob.DaysOfWeek & VBNewLine _
    & "Description: " & objJob.Description & VBNewLine _
    & "Elapsed Time: " & objJob.ElapsedTime & VBNewLine _
    & "Install Date: " & objJob.InstallDate & VBNewLine _
    & "Interact with Desktop: " & objJob.InteractWithDesktop & VBNewLine _
    & "Job ID: " & objJob.JobId & VBNewLine _
    & "Job Status: " & objJob.JobStatus & VBNewLine _
    & "Name: " & objJob.Name & VBNewLine _
    & "Notify: " & objJob.Notify & VBNewLine _
    & "Owner: " & objJob.Owner & VBNewLine _
    & "Priority: " & objJob.Priority & VBNewLine _
    & "Run Repeatedly: " & objJob.RunRepeatedly & VBNewLine _
    & "Start Time: " & objJob.StartTime & VBNewLine _
    & "Status: " & objJob.Status & VBNewLine _
    & "Time Submitted: " & objJob.TimeSubmitted & VBNewLine _
    & "Until Time: " & objJob.UntilTime
Next

스크립트 및 애플리케이션에 대한 WMI 작업

WMI C++ 애플리케이션 예제

TechNet ScriptCenter