다음을 통해 공유


Set-ScheduledJob

예약된 작업을 변경합니다.

구문

Set-ScheduledJob
   [-Name <String>]
   [-ScriptBlock <ScriptBlock>]
   [-Trigger <ScheduledJobTrigger[]>]
   [-InitializationScript <ScriptBlock>]
   [-RunAs32]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-ScheduledJobOption <ScheduledJobOptions>]
   [-InputObject] <ScheduledJobDefinition>
   [-MaxResultCount <Int32>]
   [-PassThru]
   [-ArgumentList <Object[]>]
   [-RunNow]
   [-RunEvery <TimeSpan>]
   [<CommonParameters>]
Set-ScheduledJob
   [-Name <String>]
   [-FilePath <String>]
   [-Trigger <ScheduledJobTrigger[]>]
   [-InitializationScript <ScriptBlock>]
   [-RunAs32]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-ScheduledJobOption <ScheduledJobOptions>]
   [-InputObject] <ScheduledJobDefinition>
   [-MaxResultCount <Int32>]
   [-PassThru]
   [-ArgumentList <Object[]>]
   [-RunNow]
   [-RunEvery <TimeSpan>]
   [<CommonParameters>]
Set-ScheduledJob
   [-InputObject] <ScheduledJobDefinition>
   [-ClearExecutionHistory]
   [-PassThru]
   [<CommonParameters>]

Description

Set-ScheduledJob cmdlet은 작업이 실행되는 명령 또는 작업을 실행하는 데 필요한 자격 증명과 같은 예약된 작업의 속성을 변경합니다. 예약된 작업의 실행 기록을 지우는 데 사용할 수도 있습니다.

이 cmdlet을 사용하려면 먼저 Get-ScheduledJob cmdlet을 사용하여 예약된 작업을 가져옵니다. 그런 다음 예약된 작업을 set-ScheduledJob 파이프하거나 작업을 변수에 저장하고 InputObject 매개 변수를 사용하여 작업을 식별합니다. Set-ScheduledJob 나머지 매개 변수를 사용하여 작업 속성을 변경하거나 실행 기록을 지웁다.

set-ScheduledJob 사용하여 예약된 작업의 트리거 및 옵션을 변경할 수 있지만 Add-JobTrigger, Set-JobTrigger 및 Set-ScheduledJobOption cmdlet은 이러한 작업을 수행하는 훨씬 더 쉬운 방법을 제공합니다. 예약된 새 작업을 만들려면 Register-ScheduledJob cmdlet을 사용합니다.

Set-ScheduledJob트리거 매개 변수는 작업을 시작하는 하나 이상의 작업 트리거를 추가합니다. 트리거 매개 변수는 선택 사항이므로 예약된 작업을 만들 때 트리거를 추가하거나, 나중에 작업 트리거를 추가하거나, RunNow 매개 변수를 추가하여 작업을 즉시 시작하거나, Start-Job cmdlet을 사용하여 언제든지 작업을 즉시 시작하거나, 시도되지 않은 예약된 작업을 다른 작업의 템플릿으로 저장할 수 있습니다.

Set-ScheduledJob Windows PowerShell에 포함된 PSScheduledJob 모듈의 작업 예약 cmdlet 컬렉션 중 하나입니다.

예약된 작업에 대한 자세한 내용은 PSScheduledJob 모듈의 정보 항목을 참조하세요. PSScheduledJob 모듈을 가져온 다음 Get-Help about_Scheduled* 입력하거나 about_Scheduled_Jobs 확인합니다.

이 cmdlet은 Windows PowerShell 3.0에서 도입되었습니다.

예제

예제 1: 작업이 실행되는 스크립트 변경

PS C:\> Get-ScheduledJob -Name "Inventory"
Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-Inventory.ps1             True

The second command uses the Get-ScheduledJob cmdlet to get the Inventory scheduled job. A pipeline operator (|) sends the scheduled job to the **Set-ScheduledJob** cmdlet. The **Set-ScheduledJob** cmdlet uses the *Script* parameter to specify a new script, Get-FullInventory.ps1. The command uses the *Passthru* parameter to return the scheduled job after the change.
PS C:\> Get-ScheduledJob -Name "Inventory" | Set-ScheduledJob -FilePath "C:\Scripts\Get-FullInventory.ps1" -Passthru
Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-FullInventory.ps1         True

이 예제에서는 예약된 작업에서 실행되는 스크립트를 변경하는 방법을 보여줍니다.

첫 번째 명령은 Get-ScheduledJob cmdlet을 사용하여 인벤토리 예약된 작업을 가져옵니다. 출력은 작업이 Get-Inventory.ps1 스크립트를 실행한다는 것을 보여줍니다.

이 명령은 필요하지 않습니다. 스크립트 변경의 효과를 표시하기 위해서만 포함됩니다.

예제 2: 예약된 작업의 실행 기록 삭제

PS C:\> Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory

이 명령은 BackupArchive 예약된 작업에 대한 현재 실행 기록 및 저장된 작업 결과를 삭제합니다.

이 명령은 Get-ScheduledJob cmdlet을 사용하여 BackupArchive 예약된 작업을 가져옵니다. 파이프라인 연산자(|)는 작업을 Set-ScheduledJob cmdlet으로 전송하여 변경합니다. Set-ScheduledJob cmdlet은 ClearExecutionHistory 매개 변수를 사용하여 실행 기록 및 저장된 결과를 삭제합니다.

예약된 작업의 실행 기록 및 저장된 작업 결과에 대한 자세한 내용은 about_Scheduled_Jobs 참조하세요.

예제 3: 원격 컴퓨터에서 예약된 작업 변경

PS C:\> Invoke-Command -Computer "Server01, Server02" -ScriptBlock {Get-ScheduledJob | Set-ScheduledJob -InitializationScript \\SrvA\Scripts\SetForRun.ps1}

이 명령은 Server01 및 Server02 컴퓨터의 모든 예약된 작업에서 초기화 스크립트를 변경합니다.

이 명령은 Invoke-Command cmdlet을 사용하여 Server01 및 Server02 컴퓨터에서 명령을 실행합니다.

원격 명령은 컴퓨터에서 예약된 모든 작업을 가져오는 Get-ScheduledJob 명령으로 시작합니다. 예약된 작업은 초기화 스크립트를 SetForRun.ps1변경하는 Set-ScheduledJob cmdlet으로 파이프됩니다.

매개 변수

-ArgumentList

FilePath 매개 변수로 지정된 스크립트의 매개 변수 또는 ScriptBlock 매개 변수로 지정된 명령에 대한 값을 지정합니다.

형식:Object[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Authentication

사용자의 자격 증명을 인증하는 데 사용되는 메커니즘을 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • 기본값
  • 기초의
  • Credssp
  • 소화하다
  • Kerberos
  • 교섭하다
  • NegotiateWithImplicitCredential

기본값은 Default입니다. 이 매개 변수의 값에 대한 자세한 내용은 MSDN 라이브러리의 AuthenticationMechanism 열거형 참조하세요.

주의: 사용자의 자격 증명이 인증될 원격 컴퓨터에 전달되는 CredSSP(자격 증명 보안 지원 공급자) 인증은 원격 네트워크 공유 액세스와 같이 둘 이상의 리소스에서 인증이 필요한 명령을 위해 설계되었습니다. 이 메커니즘은 원격 작업의 보안 위험을 높입니다. 원격 컴퓨터가 손상된 경우 이 컴퓨터에 전달된 자격 증명을 사용하여 네트워크 세션을 제어할 수 있습니다.

형식:AuthenticationMechanism
허용되는 값:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ClearExecutionHistory

예약된 작업의 현재 실행 기록 및 저장된 결과를 삭제합니다.

작업 실행 기록 및 작업 결과는 작업이 만들어진 컴퓨터의 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs 디렉터리에 예약된 작업과 함께 저장됩니다. 실행 기록을 보려면 Get-Job cmdlet을 사용합니다. 작업 결과를 얻으려면 Receive-Job cmdlet을 사용합니다.

이 매개 변수는 작업 스케줄러가 Windows 이벤트 로그에 쓰는 이벤트에 영향을 주지 않으며 Windows PowerShell이 작업 결과를 저장하는 것을 멈추지 않습니다. 저장된 작업 결과 수를 관리하려면 MaxResultCount 매개 변수를 사용합니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Credential

예약된 작업을 실행할 수 있는 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.

User01 또는 Domain01\User01과 같은 사용자 이름을 입력하거나 Get-Credential cmdlet에서 PSCredential 개체를 입력합니다. 사용자 이름만 입력하면 암호를 입력하라는 메시지가 표시됩니다.

형식:PSCredential
Position:Named
Default value:Current user
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-FilePath

예약된 작업이 실행되는 스크립트를 지정합니다. 로컬 컴퓨터에서 .ps1 파일의 경로를 입력합니다. 스크립트 매개 변수의 기본값을 지정하려면 ArgumentList 매개 변수를 사용합니다. 예약된 모든 작업에는 ScriptBlock 또는 FilePath 값이 있어야 합니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InitializationScript

Windows PowerShell 스크립트(.ps1)에 대한 정규화된 경로를 지정합니다. 초기화 스크립트는 ScriptBlock 매개 변수로 지정된 명령이나 FilePath 매개 변수로 지정된 스크립트 앞에 백그라운드 작업에 대해 만들어진 세션에서 실행됩니다. 초기화 스크립트를 사용하여 파일, 함수 또는 별칭 추가, 디렉터리 만들기 또는 필수 구성 요소 확인과 같은 세션을 구성할 수 있습니다.

기본 작업 명령을 실행하는 스크립트를 지정하려면 FilePath 매개 변수를 사용합니다.

초기화 스크립트가 종료되지 않는 오류를 포함하여 오류를 생성하는 경우 예약된 작업의 현재 인스턴스가 실행되지 않고 상태가 실패합니다.

형식:ScriptBlock
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

변경할 예약된 작업을 지정합니다. ScheduledJobDefinition 개체를 포함하는 변수를 입력하거나 Get-ScheduledJob 명령과 같이 ScheduledJobDefinition 개체를 가져오는 명령이나 식을 입력합니다. ScheduledJobDefinition 개체를 Set-ScheduledJob파이프할 수도 있습니다.

여러 예약된 작업을 지정하는 경우 set-ScheduledJob 모든 작업을 동일하게 변경합니다.

형식:ScheduledJobDefinition
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-MaxResultCount

예약된 작업에 대해 유지 관리되는 작업 결과 항목 수를 지정합니다. 기본값은 32입니다.

Windows PowerShell은 디스크에서 예약된 작업의 각 트리거된 인스턴스의 실행 기록 및 결과를 저장합니다. 이 매개 변수의 값은 이 예약된 작업에 대해 저장되는 작업 인스턴스 결과의 수를 결정합니다. 작업 인스턴스 결과 수가 이 값을 초과하면 Windows PowerShell은 가장 오래된 작업 인스턴스의 결과를 삭제하여 최신 작업 인스턴스의 결과를 위한 공간을 확보합니다.

작업 실행 기록 및 작업 결과는 작업이 만들어진 컴퓨터의 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<타임스탬프> 디렉터리에 저장됩니다. 실행 기록을 보려면 Get-Job cmdlet을 사용합니다. 작업 결과를 얻으려면 Receive-Job cmdlet을 사용합니다.

MaxResultCount 매개 변수는 예약된 작업의 ExecutionHistoryLength 속성 값을 설정합니다.

현재 실행 기록 및 작업 결과를 삭제하려면 ClearExecutionHistory 매개 변수를 사용합니다.

형식:Int32
Position:Named
Default value:32
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Name

예약된 작업의 새 이름과 예약된 작업의 인스턴스를 지정합니다. 이름은 로컬 컴퓨터에서 고유해야 합니다.

변경할 예약된 작업을 식별하려면 InputObject 매개 변수를 사용하거나 예약된 작업을 Get-ScheduledJob Set-ScheduledJob파이프합니다.

이 매개 변수는 디스크의 작업 인스턴스 이름을 변경하지 않습니다. 이 명령은 이 명령이 완료된 후에 시작되는 작업 인스턴스에만 영향을 줍니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-PassThru

작업 중인 항목을 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-RunAs32

32비트 프로세스에서 예약된 작업을 실행합니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-RunEvery

작업 실행 빈도를 지정하는 데 사용됩니다. 예를 들어 이 옵션을 사용하여 15분마다 작업을 실행합니다.

형식:TimeSpan
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-RunNow

Set-ScheduledJob cmdlet이 실행되는 즉시 작업을 시작합니다. 이 매개 변수는 등록 직후 Windows PowerShell 스크립트를 실행하기 위해 작업 스케줄러를 트리거할 필요가 없으며 사용자가 시작 날짜 및 시간을 지정하는 트리거를 만들 필요가 없습니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ScheduledJobOption

예약된 작업에 대한 옵션을 설정합니다. New-ScheduledJobOption cmdlet을 사용하여 만든 개체 또는 해시 테이블 값과 같은 ScheduledJobOptions 개체를 입력합니다.

예약된 작업을 등록하거나 Set-ScheduledJobOption 사용하거나 Set-ScheduledJob cmdlet을 옵션을 설정하거나 변경할 때 예약된 작업에 대한 옵션을 설정할 수 있습니다.

대부분의 옵션과 기본값은 예약된 작업이 실행되는지 여부와 시기를 결정합니다. 작업을 예약하기 전에 이러한 옵션을 검토해야 합니다. 기본값을 포함하여 예약된 작업 옵션에 대한 설명은 New-ScheduledJobOption을 참조하세요.

해시 테이블을 제출하려면 다음 키를 사용합니다. 다음 해시 테이블에서 키는 기본값으로 표시됩니다.

@{# Power SettingsStartIfOnBattery=$False;StopIfGoingOnBattery=$True; WakeToRun=$False; # Idle SettingsStartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False;# Security settingsShowInTaskScheduler=$TrueRunElevated=$False;# MiscRunWithoutNetwork=$False;DoNotAllowDemandStart=$False;MultipleInstancePolicy=IgnoreNew# Can be IgnoreNew, Parallel, Queue, StopExisting}

형식:ScheduledJobOptions
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ScriptBlock

예약된 작업이 실행되는 명령을 지정합니다. 명령을 중괄호({ })로 묶어 스크립트 블록을 만듭니다. 명령 매개 변수의 기본값을 지정하려면 ArgumentList 매개 변수를 사용합니다.

모든 Register-ScheduledJob 명령은 ScriptBlock 또는 FilePath 매개 변수를 사용해야 합니다.

형식:ScriptBlock
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Trigger

예약된 작업에 대한 트리거를 지정합니다. New-JobTrigger cmdlet이 반환하는 개체 또는 작업 트리거 키 및 값의 해시 테이블과 같은 하나 이상의 ScheduledJobTrigger 개체를 입력합니다.

작업 트리거는 일회성 또는 되풀이 예약 또는 이벤트가 발생할 때 예약된 작업을 자동으로 시작합니다.

작업 트리거는 선택 사항입니다. 예약된 작업을 만들 때 트리거를 추가하거나, Add-JobTrigger 또는 Set-ScheduledJob cmdlet을 사용하여 나중에 트리거를 추가하거나, Start-Job cmdlet을 사용하여 예약된 작업을 즉시 시작할 수 있습니다. 작업 트리거가 없는 예약된 작업을 만들고 유지 관리할 수도 있습니다.

해시 테이블을 제출하려면 다음 키를 사용합니다.

@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am"(또는 유효한 시간 문자열) DaysOfWeek="Monday", "Wednesday"(또는 일 이름의 조합) Interval=2(또는 유효한 빈도 간격) RandomDelay="30minutes"(또는 유효한 시간 범위 문자열) User="Domain1\User01"(또는 유효한 사용자; AtLogon 빈도 값에만 사용됨)

}

형식:ScheduledJobTrigger[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

ScheduledJobDefinition

예약된 작업을 Set-ScheduledJob파이프할 수 있습니다.

출력

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Passthru 매개 변수를 사용하는 경우 set-ScheduledJob 변경된 예약된 작업을 반환합니다. 그렇지 않으면 이 cmdlet은 출력을 생성하지 않습니다.