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