about_Scheduled_Jobs

간단한 설명

예약된 작업을 설명하고 PowerShell 및 작업 스케줄러에서 예약된 작업을 사용하고 관리하는 방법을 설명합니다.

자세한 설명

PowerShell 예약된 작업은 PowerShell 백그라운드 작업 및 작업 스케줄러 작업의 유용한 하이브리드입니다.

PowerShell 백그라운드 작업과 마찬가지로 예약된 작업은 백그라운드에서 비동기적으로 실행됩니다. 실행된 예약된 작업의 인스턴스는 작업 cmdlet(예: Start-Job, Get-JobStop-JobReceive-Job)을 사용하여 관리할 수 있습니다.

작업 스케줄러 작업과 마찬가지로 예약된 작업은 디스크에 저장됩니다. 작업 스케줄러에서 작업을 보고 관리하거나, 필요에 따라 작업을 사용 및 사용하지 않도록 설정하거나, 실행하거나, 템플릿으로 사용하거나, 작업을 시작하기 위한 일회성 또는 되풀이 일정을 설정하거나, 작업이 시작되는 조건을 설정할 수 있습니다.

또한 예약된 작업 인스턴스의 결과는 쉽게 액세스할 수 있는 형식으로 디스크에 저장되어 작업 출력의 실행 로그를 제공합니다. 예약된 작업에는 관리하기 위한 사용자 지정된 cmdlet 집합이 함께 제공됩니다. cmdlet을 사용하면 예약된 작업, 작업 트리거 및 작업 옵션을 만들고, 편집하고, 관리하고, 사용하지 않도록 설정하고, 다시 사용하도록 설정할 수 있습니다.

이 포괄적이고 유연한 도구 집합은 예약된 작업을 많은 전문 PowerShell IT 솔루션의 필수 구성 요소로 만듭니다.

예약된 작업 cmdlet은 PowerShell과 함께 설치된 PSScheduledJob 모듈에 포함됩니다. 이 모듈은 PowerShell 3.0에서 도입되었으며 PowerShell 3.0 이상 버전의 PowerShell에서 작동합니다. PSScheduledJob 모듈에 포함된 cmdlet에 대한 자세한 내용은 PSScheduledJob을 참조하세요.

PowerShell 백그라운드 작업에 대한 자세한 내용은 about_Jobs 참조하세요.

작업 스케줄러에 대한 자세한 내용은 작업 스케줄러를 참조 하세요.

참고 항목

작업 스케줄러에서 PowerShell 예약된 작업을 보고 관리할 수 있습니다. PowerShell 작업 및 예약된 작업 cmdlet은 PowerShell에서 만든 예약된 작업에서만 작동합니다.

빠른 시작

이 예제에서는 매일 오전 3시에 시작하여 cmdlet을 실행하는 Get-Process 예약된 작업을 만듭니다. 컴퓨터가 배터리로 실행되는 경우에도 작업이 시작됩니다.

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options

cmdlet은 Get-ScheduledJob 로컬 컴퓨터에서 예약된 작업을 가져옵니다.

Get-ScheduledJob
Id         Name            Triggers        Command            Enabled
--         ----            --------        -------            -------
7          ProcessJob      {1}             Get-Process        True

Get-JobTrigger는 ProcessJob작업 트리거를 가져옵니다. 트리거는 예약된 작업에 저장되므로 입력 매개 변수는 트리거가 아닌 예약된 작업을 지정합니다.

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

이 예제에서는 cmdlet의 ContinueIfGoingOnBattery 매개 변수를 사용하여 ProcessJobSet-ScheduledJob StopIfGoingOnBatteries 속성을 False변경합니다.

Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries     : True
StopIfGoingOnBatteries : False
WakeToRun              : True
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

cmdlet은 Get-ScheduledJob ProcessJob 예약된 작업을 가져옵니다.

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

cmdlet은 Get-Job 지금까지 실행된 ProcessJob 예약 작업의 모든 인스턴스를 가져옵니다. cmdlet은 Get-Job PSScheduledJob 모듈을 현재 세션으로 가져올 때만 예약된 작업을 가져옵니다.

예약된 작업 cmdlet을 사용하여 예약된 작업을 관리하지만 작업 cmdlet을 사용하여 예약된 작업의 인스턴스를 관리합니다.

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은 Receive-Job ProcessJob 예약 작업의 가장 최근 인스턴스의 결과를 가져옵니다(ID = 51).

Receive-Job -ID 51

명령에 Keep 매개 변수가 포함되지 않았더라도 Receive-Job 작업 결과는 삭제하거나 최대 결과 수를 초과할 때까지 디스크에 저장됩니다.

이 세션에서 작업 결과를 더 이상 사용할 수 없지만 새 세션을 시작하거나 새 PowerShell 창을 열면 작업 결과를 다시 사용할 수 있습니다.

다음 명령은 cmdlet의 Start-Job DefinitionName 매개 변수를 사용하여 ProcessJob 예약 작업을 시작합니다.

cmdlet을 사용하여 Start-Job 시작하는 작업은 예약된 작업의 인스턴스가 아니라 표준 PowerShell 백그라운드 작업입니다. 모든 백그라운드 작업과 마찬가지로 이러한 작업은 즉시 시작되며 작업 옵션의 영향을 받지 않거나 작업 트리거의 영향을 받지 않으며 해당 출력은 예약된 작업 디렉터리의 출력 디렉터리에 저장되지 않습니다.

Start-Job -DefinitionName ProcessJob

cmdlet은 Unregister-ScheduledJob ProcessJob 예약된 작업 및 해당 작업 인스턴스의 저장된 모든 결과를 삭제합니다.

Unregister-ScheduledJob ProcessJob

예약된 작업 개념

예약된 작업은 명령 또는 스크립트를 실행합니다. 예약된 작업에는 작업을 시작하는 작업 트리거와 작업 실행을 위한 조건을 설정하는 작업 옵션이 포함될 수 있습니다.

작업 트리거는 예약된 작업을 자동으로 시작합니다. 작업 트리거는 일회성 또는 되풀이 일정을 포함하거나 사용자가 로그온하거나 Windows를 시작할 때와 같은 이벤트를 지정할 수 있습니다. 예약된 작업에는 하나 이상의 작업 트리거가 있을 수 있으며 작업 트리거를 만들고, 추가하고, 사용하도록 설정하고, 사용하지 않도록 설정하고, 가져올 수 있습니다.

작업 트리거는 선택 사항입니다. 명령을 사용하거나 RunNow 매개 변수를 Start-Job cmdlet명령에 추가하여 예약된 작업을 즉시 시작할 수 있습니다Register-ScheduledJob.

작업 옵션은 예약된 작업을 실행하기 위한 조건을 설정합니다. 예약된 모든 작업에는 하나의 작업 옵션 개체가 있습니다. 작업 옵션 개체를 만들고 편집하고 하나 이상의 예약된 작업에 추가할 수 있습니다.

예약된 작업이 시작될 때마다 작업 인스턴스가 만들어집니다. PowerShell 작업 cmdlet을 사용하여 작업 인스턴스를 보고 관리합니다.

예약된 작업은 디스크에 저장되고 대신 cmdlet 동RegisterNew사를 사용합니다. XML 파일은 디렉터리의 $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs로컬 컴퓨터에 있습니다.

PowerShell은 예약된 각 작업에 대한 디렉터리를 만들고 예약된 작업 디렉터리에 작업 명령, 작업 트리거, 작업 옵션 및 작업 결과를 저장합니다. 작업 트리거 및 작업 옵션은 디스크에 독립적으로 저장되지 않습니다. 연결된 각 예약된 작업의 예약된 작업 XML에 저장됩니다.

예약된 작업, 작업 트리거 및 작업 옵션은 PowerShell에 개체로 표시됩니다. 개체는 상호 연결되어 명령 및 스크립트에서 쉽게 검색하고 사용할 수 있습니다.

예약된 작업은 ScheduledJobDefinition 개체로 표시됩니다. ScheduledJobDefinition 개체에는 예약된 작업의 작업 트리거를 포함하는 JobTriggers 속성과 작업 옵션이 포함된 Options 속성이 있습니다. 각각 작업 트리거 및 작업 옵션을 나타내는 ScheduledJobTriggersScheduledJobOptions 개체에는 각각 연결된 예약된 작업이 포함된 JobDefinition 속성이 있습니다. 이 재귀 상호 연결을 사용하면 예약된 작업의 트리거 및 옵션을 쉽게 찾고, 작업 트리거 또는 작업 옵션이 연결된 예약된 작업을 찾고, 스크립트하고, 표시할 수 있습니다.

참고 항목