about_Scheduled_Jobs_Advanced

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 3.0, Windows PowerShell 4.0

항목

about_Scheduled_Jobs_Advanced

간단한 설명

예약된 작업의 기본이 되는 파일 구조를 비롯하여 예약된 고급 작업 항목에 대해 설명합니다.

자세한 설명

이 항목은 다음 섹션으로 구성됩니다.

  • -- 예약된 작업 디렉터리 및 파일

  • -- 예약된 작업 이름 바꾸기

  • -- 예약된 작업 즉시 시작

  • -- 실행 기록 관리

예약된 작업 디렉터리 및 파일

Windows PowerShell® 예약된 작업은 Windows PowerShell 작업이면서 작업 스케줄러 작업입니다. 각 예약된 작업은 작업 스케줄러에 등록되고 디스크에 Microsoft .Net Framework Serialization XML 형식으로 저장됩니다.

예약된 작업을 만들 때 Windows PowerShell에서는 로컬 컴퓨터의 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs 디렉터리에서 예약된 작업에 대한 디렉터리를 만듭니다. 디렉터리 이름은 작업 이름과 같습니다.

샘플 ScheduledJobs 디렉터리는 다음과 같습니다.

        PS C:\ps-test> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

        Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         9/29/2011  10:03 AM            ArchiveProjects
        d----         9/30/2011   1:18 PM            Inventory
        d----        10/20/2011   9:15 AM            Backup-Scripts
        d----         11/7/2011  10:40 AM            ProcessJob
        d----         11/2/2011  10:25 AM            SecureJob
        d----         9/27/2011   1:29 PM            Test-HelpFiles
        d----         9/26/2011   4:22 PM            DeployPackage

각 예약된 작업에는 자체 디렉터리가 있습니다. 디렉터리에는 예약된 작업 XML 파일 및 출력 하위 디렉터리가 포함됩니다.

        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob

        Directory:
        C:\Users\User1\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         11/1/2011   3:00 PM            Output
        -a---         11/1/2011   3:43 PM       7281 ScheduledJobDefinition.xml

예약된 작업의 출력 디렉터리에는 실행 기록이 포함됩니다. 작업 트리거가 예약된 작업을 시작할 때마다 Windows PowerShell에서는 출력 디렉터리에서 타임스탬프로 이름이 지정된 디렉터리를 만듭니다. 타임스탬프 디렉터리에는 Results.xml 파일의 작업 결과 및 Status.xml 파일의 작업 상태가 포함됩니다.

다음 명령은 ProcessJob 예약된 작업에 대한 실행 기록 디렉터리를 보여 줍니다.

        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output

        Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         11/2/2011   3:00 AM            20111102-030002-260
        d----         11/3/2011   3:00 AM            20111103-030002-277
        d----         11/4/2011   3:00 AM            20111104-030002-209
        d----         11/5/2011   3:00 AM            20111105-030002-251
        d----         11/6/2011   3:00 AM            20111106-030002-174
        d----         11/7/2011  12:00 AM            20111107-000001-914
        d----         11/7/2011   3:00 AM            20111107-030002-376


        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output\20111102-030002-260

        Directory: C:\Users\juneb\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\testjob\output\20111102-030002-260


        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        -a---         11/2/2011   3:00 AM     581106 Results.xml
        -a---         11/2/2011   3:00 AM       9451 Status.xml

ScheduledJobDefinition.xml, Results.xml 및 Status.xml 파일을 열고 검토하거나 Select-XML cmdlet을 사용하여 파일을 구문 분석할 수 있습니다.

경고: XML 파일을 편집하지 마세요. XML 파일에 잘못된 XML이 있으면 Windows PowerShell에서는 작업 결과를 포함하여 예약된 작업 및 실행 기록을 삭제합니다.

예약된 작업 즉시 시작

다음 두 방법의 하나로 예약된 작업을 시작할 수 있습니다.

  • -- Start-Job cmdlet을 실행하여 예약된 작업을 시작합니다.

  • -- RunNow 매개 변수를 Register-ScheduledJob 명령에 추가하여 명령이 실행되면 바로 작업을 시작합니다.

Start-Job cmdlet을 사용하여 시작된 작업은 예약된 작업의 인스턴스가 아니라 표준 Windows PowerShell 백그라운드 작업입니다. 모든 백그라운드 작업처럼 이들 작업은 작업 옵션이 적용되거나 작업 트리거의 영향을 받지 않고 즉시 시작되고, 해당 출력은 예약된 작업 디렉터리의 출력 디렉터리에 저장되지 않습니다.

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

        Start-Job -DefinitionName ProcessJob

작업을 관리하고 작업 결과를 가져오려면 Job cmdlet을 사용합니다. Job cmdlet에 대한 자세한 내용은 about_Jobs(https://go.microsoft.com/fwlink/?LinkID=113251)(영문)를 참조하세요.

참고: 예약된 작업의 인스턴스에서 Job cmdlet을 사용하려면 PSScheduledJob 모듈을 세션으로 가져와야 합니다. PSScheduledJob 모듈을 가져오려면 "Import-Module PSScheduledJob"(따옴표 제외)을 입력하거나 Get-ScheduledJob 등의 예약된 Job cmdlet을 사용합니다.

예약된 작업 이름 바꾸기

예약된 작업의 이름을 바꾸려면 Set-ScheduledJob cmdlet의 Name 매개 변수를 사용합니다. 예약된 작업의 이름을 바꾸면 Windows PowerShell에서는 예약된 작업 및 예약된 작업 디렉터리의 이름을 변경합니다. 그러나 이미 실행된 예약된 작업 인스턴스의 이름은 변경하지 않습니다.

시작 및 종료 시간 가져오기

작업 인스턴스가 시작 및 종료된 날짜와 시간을 가져오려면 Get-Job이 예약된 작업에 대해 반환하는 ScheduledJob 개체의 PSBeginTime 및 PSEndTime 속성을 사용합니다.

다음 예제에서는 Format-Table cmdlet의 Property 매개 변수를 사용하여 테이블에 있는 각 작업 인스턴스의 PSBeginTime 및 PSEndTime 속성을 표시합니다. 이 명령은 계산된 속성을 사용하여 각 작업 인스턴스의 경과 시간을 표시합니다.

      PS C:\> Get-job -Name UpdateHelpJob | Format-Table -Property ID, PSBeginTime, PSEndTime,
      @{Label="Elapsed Time";Expression={$_.PsEndTime - $_.PSBeginTime}}

      Id   PSBeginTime             PSEndTime                Elapsed Time
      --   -----------             ---------                ------------
       2   11/3/2011 3:00:01 AM    11/3/2011 3:00:39 AM     00:00:38.0053854
       3   11/4/2011 3:00:02 AM    11/4/2011 3:01:01 AM     00:00:59.1188475
       4   11/5/2011 3:00:02 AM    11/5/2011 3:00:50 AM     00:00:48.3692034
       5   11/6/2011 3:00:01 AM    11/6/2011 3:00:54 AM     00:00:52.8013036
       6   11/7/2011 3:00:01 AM    11/7/2011 3:00:38 AM     00:00:37.1930350
       7   11/8/2011 3:00:01 AM    11/8/2011 3:00:57 AM     00:00:56.2570556
       8   11/9/2011 3:00:03 AM    11/9/2011 3:00:55 AM     00:00:51.8142222
       9   11/10/2011 3:00:02 AM   11/10/2011 3:00:42 AM    00:00:40.7195954

실행 기록 관리

각 예약 작업에 대해 저장되는 작업 인스턴스 결과 수를 결정하고 언제든지 예약된 작업의 실행 기록 및 저장된 작업 결과를 삭제할 수 있습니다.

예약된 작업의 ExecutionHistoryLength 속성은 예약된 작업에 대해 저장되는 작업 인스턴스 결과 수를 결정합니다. 저장된 결과 수가 ExecutionHistoryLength 속성 값을 초과하면 Windows PowerShell에서는 가장 오래된 인스턴스의 결과를 삭제하여 가장 새로운 인스턴스의 결과에 사용할 공간을 만듭니다.

기본적으로 Windows PowerShell에서는 각 예약된 작업에 대한 32개 인스턴스의 실행 기록 및 결과를 저장합니다. 해당 값을 변경하려면 Register-ScheduledJob 또는 Set-ScheduledJob cmdlet의 MaxResultCount 매개 변수를 사용합니다.

예약된 작업의 실행 기록 및 모든 결과를 삭제하려면 Set-ScheduledJob cmdlet의 ClearExecutionHistory 매개 변수를 사용합니다. 이 실행 기록을 삭제하면 Windows PowerShell이 예약된 작업의 새 인스턴스를 저장하지 않습니다. 여기에 섹션 본문을 삽입합니다.

다음 명령은 Register-ScheduledJob cmdlet을 사용하여 예약된 작업을 만듭니다. 이 명령은 MaxResultCount 매개 변수와 값 12를 함께 사용하여 예약된 작업의 가장 새로운 작업 인스턴스 결과를 12개만 저장합니다.

        Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} -MaxResultCount 12

다음 명령은 Set-ScheduledJob cmdlet의 MaxResultCount 매개 변수를 사용하여 저장된 인스턴스 결과 수를 15로 늘립니다.

        Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

다음 명령은 ProcessJob 예약된 작업의 실행 기록 및 모든 현재 저장된 결과를 삭제합니다.

        Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

다음 명령은 컴퓨터에 있는 모든 예약된 작업의 이름 및 ExecutionHistoryLength 속성 값을 가져오고 이를 테이블로 표시합니다.

        Get-ScheduledJob | Format-Table -Property Name, ExecutionHistoryLength -AutoSize

참고 항목

about_Scheduled_Jobs

about_Scheduled_Jobs_Troubleshooting

about_Jobs