예약된 작업 기본 정보
간단한 설명
예약된 작업을 만들고 관리하는 방법에 대해 설명합니다.
자세한 설명입니다.
이 문서에서는 예약된 작업을 만들고 관리하는 기본 작업을 수행하는 방법을 보여 줍니다. 고급 작업에 대한 자세한 내용은 about_Scheduled_Jobs_Advanced.
예약된 작업을 만드는 방법
예약된 작업을 만들려면 cmdlet을 Register-ScheduledJob
사용합니다. cmdlet에는 작업이 실행되는 이름 및 명령 또는 스크립트가 필요합니다. RunNow 매개 변수를 추가하여 작업을 즉시 실행하거나 작업 트리거를 만들고 작업을 만들 때 작업 옵션을 설정하거나 기존 작업을 편집할 수 있습니다.
스크립트를 실행하는 작업을 만들려면 FilePath 매개 변수를 사용하여 스크립트 파일의 경로를 지정합니다. 명령을 실행하는 작업을 만들려면 ScriptBlock 매개 변수를 사용합니다.
cmdlet은 Register-ScheduledJob
명령을 실행하는 ProcessJob을 Get-Process
만듭니다. 이 예약된 작업에는 기본 작업 옵션과 작업 트리거가 없습니다.
Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
작업 트리거를 만드는 방법
작업 트리거는 예약된 작업을 자동으로 시작합니다. 작업 트리거는 일회성 또는 되풀이 일정 또는 이벤트(예: 사용자가 로그온하거나 Windows를 시작할 때)일 수 있습니다. 각 작업에는 0개, 1개 또는 여러 개의 작업 트리거가 있을 수 있습니다.
작업 트리거를 만들려면 cmdlet을 New-JobTrigger
사용합니다. 다음 명령은 매주 월요일과 목요일 오전 5시에 작업을 시작하는 작업 트리거를 만듭니다.
명령은 작업 트리거를 변수에 $T
저장합니다.
$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
작업 트리거는 선택 사항입니다. RunNow 매개 변수 Register-ScheduledJob
를 명령에 추가하거나 cmdlet을 사용하여 Start-Job
언제든지 예약된 작업을 시작할 수 있습니다.
작업 트리거를 추가하는 방법
예약된 작업에 작업 트리거를 추가하면 예약된 작업의 예약된 작업 XML 파일에 작업 트리거가 추가되고 예약된 작업의 일부가 됩니다.
예약된 작업을 만들거나 기존 작업을 편집할 때 예약된 작업에 작업 트리거를 추가할 수 있습니다. 언제든지 예약된 작업의 작업 트리거를 변경할 수 있습니다.
PowerShell은 작업 스케줄러에서 사용하는 것과 동일한 작업 트리거 중 일부를 사용합니다. 작업 트리거에 대한 자세한 내용은 New-JobTrigger cmdlet에 대한 도움말 항목을 참조하세요.
다음 예제에서는 스플래팅을 사용하여 cmdlet에 전달되는 Register-ScheduledJob
매개 변수 값을 만듭니 $JobParms
다. 자세한 내용은 about_Splatting.md를 참조하세요.
는 Register-ScheduledJob
를 사용하여 @JobParms
예약된 작업을 만듭니다. Trigger 매개 변수를 사용하여 변수에서 작업 트리거를 $T
지정합니다.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Command}
Trigger = $T
}
Register-ScheduledJob @JobParms
언제든지 기존 예약된 작업에 작업 트리거를 추가할 수도 있습니다. cmdlet은 Add-JobTrigger
변수의 작업 트리거를 $T
ProcessJob 예약 작업에 추가합니다.
Add-JobTrigger -Name ProcessJob -Trigger $T
결과적으로 작업 트리거는 매주 월요일과 목요일 오전 5시에 ProcessJob 을 자동으로 시작합니다.
작업 트리거를 가져오는 방법
예약된 작업의 작업 트리거를 얻으려면 cmdlet을 Get-JobTrigger
사용합니다. Name, ID 및 InputObject 매개 변수를 사용하여 작업 트리거가 아닌 예약된 작업을 지정합니다.
Get-JobTrigger
는 ProcessJob의 작업 트리거를 가져옵니다.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
작업 옵션을 만드는 방법
작업 옵션은 작업을 시작하고 실행하기 위한 조건을 설정합니다. 모든 작업에는 사용자가 변경하지 않는 한 기본 작업 옵션이 있습니다. 작업 옵션은 예약된 시간에 작업이 실행되지 않도록 할 수 있으므로 작업 옵션을 이해하고 신중하게 사용하는 것이 중요합니다.
PowerShell은 작업 스케줄러에서 사용하는 것과 동일한 작업 옵션을 사용합니다. 작업 옵션에 대한 자세한 내용은 New-ScheduledJobOption에 대한 도움말 항목을 참조하세요.
작업 옵션은 예약된 작업 XML 파일에 저장됩니다. 예약된 작업을 만들거나 언제든지 변경할 때 작업 옵션을 설정할 수 있습니다.
cmdlet은 New-ScheduledJobOption
WakeToRun 예약된 작업 옵션이 True로 설정된 예약된 작업 옵션을 만듭니다. WakeToRun 옵션은 컴퓨터가 예약된 시작 시간에 절전 모드 또는 최대 절전 모드 상태인 경우에도 예약된 작업을 실행합니다. 명령은 작업 옵션을 변수에 $O
저장합니다.
$O = New-ScheduledJobOption -WakeToRun
작업 옵션을 가져오는 방법
예약된 작업의 작업 옵션을 얻으려면 cmdlet을 Get-ScheduledJobOption
사용합니다. Name, ID 및 InputObject 매개 변수를 사용하여 작업 옵션이 아닌 예약된 작업을 지정합니다.
Get-ScheduledJobOption
는 ProcessJob의 작업 옵션을 가져옵니다.
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
작업 옵션을 변경하는 방법
예약된 작업을 만들거나 기존 작업을 편집할 때 예약된 작업의 작업 옵션을 변경할 수 있습니다.
splatted $JobParms
가 cmdlet에 Add-JobTrigger
전달되어 프로세스 작업을 만듭니다. ScheduledJobOption 매개 변수를 사용하여 변수에 $O
작업 옵션을 지정합니다.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
ScheduledJobOption = $O
}
Add-JobTrigger @JobParms
언제든지 작업 옵션을 기존 예약된 작업으로 변경할 수도 있습니다.
다음 명령은 cmdlet을 Set-ScheduledJobOption
사용하여 ProcessJob scheduledJob의 WakeToRun 옵션 값을 True로 변경합니다.
Set
cmdlet과 같은 Set-ScheduledJobOption
PSScheduledJob 모듈의 cmdlet에는 이름 또는 ID 매개 변수가 없습니다. InputObject 매개 변수를 사용하여 예약된 작업 옵션을 지정하거나 cmdlet에서 Get-ScheduledJobOption
로 예약된 작업을 파이프할 Set-ScheduledJobOption
수 있습니다.
이 예제에서는 cmdlet을 Get-ScheduledJob
사용하여 ProcessJob을 가져옵니다. Cmdlet을 Get-ScheduledJobOption
사용하여 ProcessJob 에서 작업 옵션을 가져온 다음 Set-ScheduledJobOption
cmdlet을 사용하여 ProcessJob의 WakeToRun 작업 옵션을 True로 변경합니다.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
Set-ScheduledJobOption -WakeToRun
예약된 작업 인스턴스를 가져오는 방법
예약된 작업이 시작되면 PowerShell은 표준 PowerShell 백그라운드 작업과 유사한 작업 instance 만듭니다. 와 같은 Get-Job
Stop-Job
Receive-Job
작업 cmdlet을 사용하여 작업 인스턴스를 관리할 수 있습니다.
참고
예약된 작업 인스턴스에서 작업 cmdlet을 사용하려면 PSScheduledJob 모듈을 세션으로 가져와야 합니다. PSScheduledJob 모듈을 가져오려면 예약된 작업 cmdlet(예: Get-ScheduledJob
)을 입력 Import-Module PSScheduledJob
하거나 사용합니다.
PowerShell 예약된 작업의 모든 인스턴스와 모든 활성 표준 작업을 얻으려면 cmdlet을 Get-Job
사용합니다. cmdlet은 Import-Module
PSScheduledJob 모듈을 가져오고 Get-Job
로컬 컴퓨터에서 작업을 가져옵니다.
Import-Module PSScheduledJob
Get-Job
Get-Job
는 로컬 컴퓨터에서 ProcessJob 인스턴스를 가져옵니다.
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
기본 디스플레이는 일반적으로 동일한 예약된 작업의 인스턴스를 구분하는 시작 시간을 표시하지 않습니다.
cmdlet은 Get-Job
파이프라인 아래로 개체를 보냅니다. cmdlet은 Format-Table
예약된 작업의 이름, ID 및 BeginTime 속성을 표시합니다.
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
예약된 작업 결과 가져오기
예약된 작업의 instance 결과를 얻으려면 cmdlet을 Receive-Job
사용합니다.
참고
예약된 작업 인스턴스에서 작업 cmdlet을 사용하려면 PSScheduledJob 모듈을 세션으로 가져와야 합니다. PSScheduledJob 모듈을 가져오려면 예약된 작업 cmdlet(예: Get-ScheduledJob
)을 입력 Import-Module PSScheduledJob
하거나 사용합니다.
이 예제에서는 ProcessJob 예약 작업의 최신 instance 결과를 가져옵니다(ID = 51).
Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep
예약된 작업의 결과는 디스크에 저장되므로 Keep 매개 변수 Receive-Job
는 필요하지 않습니다. 그러나 Keep 매개 변수가 없으면 각 PowerShell 세션에서 예약된 작업의 결과를 한 번만 가져올 수 있습니다. 새 PowerShell 세션을 시작하려면 새 PowerShell 창을 입력 PowerShell
하거나 엽니다.