about_Scheduled_Jobs_Basics
업데이트 날짜: 2014년 5월
적용 대상: Windows PowerShell 3.0, Windows PowerShell 4.0
항목
about_Scheduled_Jobs_Basics
간단한 설명
예약된 작업을 만들고 관리하는 방법에 대해 설명합니다.
자세한 설명
이 항목에서는 예약된 작업을 만들고 관리하는 기본적인 작업의 수행 방법을 보여 줍니다. 고급 작업에 대한 자세한 내용은 about_Scheduled_Jobs_Advanced를 참조하세요.
예약된 작업을 만드는 방법
예약된 작업을 만들려면 Register-ScheduledJob cmdlet을 사용합니다. 이 cmdlet에는 이름과 작업이 실행하는 명령이나 스크립트가 필요합니다. RunNow 매개 변수를 추가하여 즉시 작업을 실행하거나 작업 트리거를 만들고 작업을 만들 때나 나중에 작업 옵션을 설정할 수 있습니다.
스크립트를 실행하는 작업을 만들려면 FilePath 매개 변수를 사용하여 스크립트 파일의 경로를 지정합니다. 명령을 실행하는 작업을 만들려면 ScriptBlock 매개 변수를 사용합니다.
다음 명령은 Get-Process 명령을 실행하는 ProcessJob을 만듭니다. 이 예약된 작업은 기본 작업 옵션을 사용하며 작업 트리거가 없습니다.
PS C:\> Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
작업 트리거를 만드는 방법
작업 트리거는 예약된 작업을 자동으로 시작합니다. 작업 트리거는 사용자가 로그온하거나 Windows가 시작되는 경우처럼 일회성 또는 되풀이 일정이거나 이벤트일 수 있습니다. 각 작업에는 작업 트리거가 0개, 한 개 또는 여러 개 있을 수 있습니다.
작업 트리거를 만들려면 New-JobTrigger cmdlet을 사용합니다. 다음 명령은 매주 월요일과 목요일 오전 5시에 작업을 시작하는 작업 트리거를 만듭니다. 이 명령은 작업 트리거를 $t 변수에 저장합니다.
$t = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
작업 트리거는 선택 사항입니다. Register-ScheduledJob 명령에 RunNow 매개 변수를 추가하거나 Start-Job cmdlet을 사용하여 언제든지 예약된 작업을 시작할 수 있습니다.
작업 트리거를 추가하는 방법
예약된 작업에 작업 트리거를 추가하면 작업 트리거가 예약된 작업의 예약된 작업 XML 파일에 추가되고 예약된 작업의 일부가 됩니다.
작업 트리거는 예약된 작업을 만들 때나 나중에 예약된 작업에 추가할 수 있으며 언제든지 예약된 작업의 작업 트리거를 변경할 수 있습니다.
Windows PowerShell®은 작업 스케줄러에서 사용하는 것과 동일한 작업 트리거 중 일부를 사용합니다. 작업 트리거에 대한 자세한 내용은 New-JobTrigger cmdlet에 대한 도움말 항목을 참조하세요. 여기에 섹션 본문을 삽입합니다.
다음 명령은 Register-ScheduledJob cmdlet을 사용하여 프로세스 작업을 만듭니다. 이 명령은 Trigger 매개 변수를 사용하여 $t 변수에 작업 트리거를 지정합니다.
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Command} -Trigger $t
언제든지 기존 예약된 작업에 작업 트리거를 추가할 수도 있습니다. 다음 명령은 $t 변수의 작업 트리거를 ProcessJob 예약된 작업에 추가합니다.
Add-JobTrigger -Name ProcessJob -Trigger $t
이 명령의 결과로 작업 트리거는 매주 월요일과 목요일 오전 5시에 ProcessJob을 자동으로 시작합니다.
작업 트리거를 가져오는 방법
예약된 작업의 작업 트리거를 가져오려면 Get-JobTrigger cmdlet을 사용합니다. Name, ID 및 InputObject 매개 변수를 사용하여 작업 트리거가 아닌 예약된 작업을 지정합니다.
다음 명령은 ProcessJob의 작업 트리거를 가져옵니다.
PS C:\> Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
작업 옵션을 만드는 방법
작업 옵션은 작업을 시작하고 실행하는 조건을 설정합니다. 모든 작업에는 변경하지 않는 한 기본 작업 옵션이 있습니다. 작업 옵션으로 인해 작업이 예약된 시간이 실행되지 않을 수 있으므로 작업 옵션을 이해하고 주의해서 사용해야 합니다.
Windows PowerShell은 작업 스케줄러에서 사용하는 것과 동일한 작업 옵션을 사용합니다. 작업 옵션에 대한 자세한 내용은 New-ScheduledJobOption cmdlet에 대한 도움말 항목을 참조하세요. "Get-Help New-ScheduledJobOption"을 입력하거나 온라인 도움말 항목(https://go.microsoft.com/fwlink/?LinkID=223915)(영문)을 참조하세요.
작업 옵션은 예약된 작업 XML 파일에 저장됩니다. 작업 옵션은 예약된 작업을 만들 때 설정하거나 언제든지 변경할 수 있습니다.
다음 명령은 WakeToRun 예약된 작업 옵션이 True로 설정된 예약된 작업 옵션을 만듭니다. WakeToRun 옵션은 컴퓨터가 예약된 시작 시간에 절전 또는 최대 절전 상태인 경우에도 예약된 작업을 실행합니다. 이 명령은 작업 옵션을 $o 변수에 저장합니다.
$o = New-ScheduledJobOption -WakeToRun
작업 옵션을 가져오는 방법
예약된 작업의 작업 옵션을 가져오려면 Get-ScheduledJobOption cmdlet을 사용합니다. Name, ID 및 InputObject 매개 변수를 사용하여 작업 옵션이 아닌 예약된 작업을 지정합니다.
다음 명령은 ProcessJob의 작업 옵션을 가져옵니다. 여기에 섹션 본문을 삽입합니다.
PS C:\> Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries : False
StopIfGoingOnBatteries : True
WakeToRun : False
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
작업 옵션을 변경하는 방법
예약된 작업의 작업 옵션은 예약된 작업을 만들 때 또는 나중에 언제든지 변경할 수 있습니다.
다음 명령은 Register-JobTrigger cmdlet을 사용하여 프로세스 작업을 만듭니다. 이 명령은 ScheduledJobOption 매개 변수를 사용하여 $o 변수에 작업 옵션을 지정합니다.
Register-JobTrigger -Name ProcessJob -ScriptBlock {Get-Process} -ScheduledJobOption $o
또한 언제든지 기존 예약된 작업의 작업 옵션을 변경할 수 있습니다. 다음 명령은 Set-ScheduledJobOption cmdlet을 사용하여 ProcessJob 예약된 작업의 WakeToRun 옵션 값을 True로 변경합니다.
PSScheduledJob 모듈의 모든 Set cmdlet과 마찬가지로 Set-ScheduledJobOption cmdlet에는 Name 또는 ID 매개 변수가 없습니다. InputObject 매개 변수를 사용하여 예약된 작업 옵션을 지정하거나 예약된 작업을 Get-ScheduledJobOption cmdlet에서 Set-ScheduledJobOption으로 파이프할 수 있습니다.
다음 명령은 Get-ScheduledJob cmdlet을 사용하여 ProcessJob을 가져옵니다. 이 명령은 Get-ScheduledJobOption cmdlet을 사용하여 ProcessJob의 작업 옵션을 가져오고 Set-ScheduledJobOption cmdlet을 사용하여 ProcessJob의 WakeToRun 작업 옵션을 True로 변경합니다.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption | Set-ScheduledJobOption -WakeToRun
예약된 작업 인스턴스를 가져오는 방법
예약된 작업이 시작되면 Windows PowerShell은 표준 Windows PowerShell 백그라운드 작업과 유사한 작업 인스턴스를 만듭니다. Get-Job, Stop-Job 및 Receive-Job과 같은 Job cmdlet을 사용하여 작업 인스턴스를 관리할 수 있습니다.
참고: 예약된 작업의 인스턴스에서 Job cmdlet을 사용하려면 PSScheduledJob 모듈을 세션으로 가져와야 합니다. PSScheduledJob 모듈을 가져오려면 "Import-Module PSScheduledJob"(따옴표 제외)을 입력하거나 Get-ScheduledJob 등의 예약된 Job cmdlet을 사용합니다.
Windows PowerShell 예약된 작업의 모든 인스턴스와 모든 활성 표준 작업을 가져오려면 Get-Job cmdlet을 사용합니다. 다음 명령은 PSScheduledJob 모듈을 가져온 다음 로컬 컴퓨터에서 모든 작업을 가져옵니다.
PS C:\> Import-Module PSScheduledJob
PS C:\> Get-Job
다음 명령은 로컬 컴퓨터에서 ProcessJob의 모든 인스턴스를 가져옵니다.
PS C:\> Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
기본 표시에는 일반적으로 동일한 예약된 작업의 인스턴스를 구분하는 시작 시간이 표시되지 않습니다.
다음 명령은 Format-Table cmdlet을 사용하여 예약된 작업의 Name, ID 및 BeginTime 속성을 표시합니다.
PS C:\> Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name Id BeginTime
---- -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM
예약된 작업 결과 가져오기
예약된 작업의 인스턴스 결과를 가져오려면 Receive-Job cmdlet을 사용합니다.
참고: 예약된 작업의 인스턴스에서 Job cmdlet을 사용하려면 PSScheduledJob 모듈을 세션으로 가져와야 합니다. PSScheduledJob 모듈을 가져오려면 "Import-Module PSScheduledJob"(따옴표 제외)을 입력하거나 Get-ScheduledJob 등의 예약된 Job cmdlet을 사용합니다.
다음 명령은 ProcessJob 예약된 작업(ID = 51)의 최신 인스턴스 결과를 가져옵니다.
PS C:\> Import-Module PSScheduledJob
PS C:\> Receive-Job -ID 51 -Keep
예약된 작업의 결과는 디스크에 저장되므로 Receive-Job의 Keep 매개 변수가 필요하지 않습니다. 그러나 Keep 매개 변수가 없으면 각 Windows PowerShell 세션에서 예약된 작업의 결과를 한 번만 가져올 수 있습니다. 새 Windows PowerShell 세션을 시작하려면 "PowerShell"을 입력하거나 새 Windows PowerShell 창을 엽니다.
참고 항목
about_Scheduled_Jobs
about_Scheduled_Jobs_Advanced
about_Scheduled_Jobs_Troubleshooting