다음을 통해 공유


about_Scheduled_Jobs_Advanced

간단한 설명

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

자세한 설명

PSScheduledJob 모듈에 포함된 cmdlet에 대한 자세한 내용은 PSScheduledJob을 참조하세요.

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

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

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

다음은 ScheduledJobs 디렉터리 샘플입니다.

Get-ChildItem $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 파일 및 출력 하위 디렉터리가 포함됩니다.

$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\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

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

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

$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
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
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
               \ScheduledJobs\ProcessJob\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.xmlStatus.xml 파일을 열고 검사하거나 cmdlet을 Select-XML 사용하여 파일을 구문 분석할 수 있습니다.

Warning

XML 파일을 편집하지 마세요. XML 파일에 잘못된 XML이 포함된 경우 PowerShell은 작업 결과를 포함하여 예약된 작업 및 실행 기록을 삭제합니다.

예약된 작업을 즉시 시작합니다.

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

  • cmdlet을 Start-Job 실행하여 예약된 작업을 시작합니다.
  • RunNow 매개 변수를 Register-ScheduledJob 명령에 추가하여 명령이 실행되는 즉시 작업을 시작합니다.

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

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

Start-Job -DefinitionName ProcessJob

작업을 관리하고 작업 결과를 얻으려면 작업 cmdlet을 사용합니다. 작업 cmdlet에 대한 자세한 내용은 about_Jobs 참조하세요.

참고 항목

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

예약된 작업 이름 바꾸기

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

시작 및 종료 시간 가져오기

작업 인스턴스가 시작되고 종료된 날짜와 시간을 얻으려면 예약된 작업에 대해 반환되는 ScheduledJob 개체 Get-Job 의 PSBeginTimePSEndTime 속성을 사용합니다.

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

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 속성 값을 초과하면 PowerShell은 가장 오래된 인스턴스의 결과를 삭제하여 최신 인스턴스의 결과를 위한 공간을 확보합니다.

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

예약된 작업에 대한 실행 기록 및 모든 결과를 삭제하려면 cmdlet의 ClearExecutionHistory 매개 변수를 Set-ScheduledJob 사용합니다. 이 실행 기록을 삭제해도 PowerShell이 예약된 작업의 새 인스턴스 결과를 저장할 수 없습니다.

다음 예제에서는 스플래팅을 사용하여 cmdlet에 Register-ScheduledJob 전달되는 매개 변수 값을 만듭니 $JobParms 다. 자세한 내용은 about_Splatting.md를 참조 하세요. Register-ScheduledJob 예약된 작업을 만드는 데 사용됩니다@JobParms. 이 명령은 MaxResultCount 매개 변수를 값 12와 함께 사용하여 예약된 작업의 최신 작업 인스턴스 결과 12개만 저장합니다.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  MaxResultCount = "12"
}

Register-ScheduledJob @JobParms

다음 명령은 cmdlet의 Set-ScheduledJob 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

참고 항목