about_Scheduled_Jobs_Basics
간단한 설명
예약된 작업을 만들고 관리하는 방법을 설명합니다.
자세한 설명
이 문서에서는 예약된 작업을 만들고 관리하는 기본 작업을 수행하는 방법을 보여 줍니다. 고급 작업에 대한 자세한 내용은 about_Scheduled_Jobs_Advanced 참조하세요.
PSScheduledJob 모듈에 포함된 cmdlet에 대한 자세한 내용은 PSScheduledJob을 참조하세요.
예약된 작업을 만드는 방법
예약된 작업을 만들려면 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
. 트리거 매개 변수를 사용하여 변수에서 작업 트리거를 $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
작업 옵션을 변경하는 방법
예약된 작업을 만들거나 기존 작업을 편집할 때 예약된 작업의 작업 옵션을 변경할 수 있습니다.
스플래트는 $JobParms
프로세스 작업을 만들기 위해 Add-JobTrigger
cmdlet에 전달됩니다. 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 백그라운드 작업과 유사한 작업 인스턴스를 만듭니다. 작업 cmdlet(예: 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
예약된 작업 결과 가져오기
예약된 작업의 인스턴스 결과를 얻으려면 cmdlet을 Receive-Job
사용합니다.
참고 항목
예약된 작업 인스턴스에서 작업 cmdlet을 사용하려면 PSScheduledJob 모듈을 세션으로 가져와야 합니다. PSScheduledJob 모듈을 가져오려면 예약된 작업 cmdlet(예: Get-ScheduledJob
.)을 입력 Import-Module PSScheduledJob
하거나 사용합니다.
이 예제에서는 ProcessJob 예약 작업의 최신 인스턴스(ID = 51)의 결과를 가져옵니다.
Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep
예약된 작업의 결과는 디스크에 저장되므로 Keep 매개 변수 Receive-Job
는 필요하지 않습니다. 그러나 Keep 매개 변수가 없으면 각 PowerShell 세션에서 예약된 작업의 결과를 한 번만 가져올 수 있습니다. 새 PowerShell 세션을 시작하려면 새 PowerShell 창을 입력 PowerShell
하거나 엽니다.
참고 항목
PowerShell