共用方式為


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-ScheduledJobTrigger 參數會新增一或多個啟動作業的作業觸發程式。 觸發程式 參數是選擇性的,因此您可以在建立排程作業時新增觸發程式、稍後新增作業觸發程式、新增 RunNow 參數以立即啟動作業、使用 Start-Job Cmdlet 隨時啟動作業,或將未搜尋的排程工作儲存為其他作業的範本。

Set-ScheduledJob 是 Windows PowerShell 中 PSScheduledJob 模組中作業排程 Cmdlet 的其中一個集合。

如需排程工作的詳細資訊,請參閱 PSScheduledJob 模組中的 About 主題。 匯入 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 命令開始。 排程的工作會透過管線傳送至 set-ScheduledJob Cmdlet ,將初始化腳本變更為 SetForRun.ps1。

參數

-ArgumentList

針對 FilePath 參數所指定的腳本參數,或 ScriptBlock 參數所指定的命令,指定值。

類型:Object[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Authentication

指定用來驗證使用者認證的機制。 此參數可接受的值為:

  • 違約
  • 基本
  • Credssp
  • 消化
  • Kerberos
  • 談判
  • NegotiateWithImplicitCredential

預設值為 Default。 如需此參數值的詳細資訊,請參閱 MSDN 連結庫中 AuthenticationMechanism 列舉

注意:認證安全性支援提供者 (CredSSP) 驗證,其中使用者的認證會傳遞至要驗證的遠端計算機,其設計目的是需要對多個資源進行驗證的命令,例如存取遠端網路共用。 此機制會增加遠端作業的安全性風險。 如果遠端電腦遭到入侵,傳遞給它的認證可用來控制網路會話。

類型:AuthenticationMechanism
接受的值:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
預設值: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
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

指定具有執行排程工作許可權的用戶帳戶。 預設值為目前的使用者。

輸入用戶名稱,例如User01或Domain01\User01,或輸入 PSCredential 物件,例如 Get-Credential Cmdlet 中的一個。 如果您只輸入使用者名稱,系統會提示您輸入密碼。

類型:PSCredential
Position:Named
預設值:Current user
必要:False
接受管線輸入:False
接受萬用字元:False

-FilePath

指定排程作業執行的文稿。 輸入本機計算機上 .ps1 檔案的路徑。 若要指定文本參數的預設值,請使用 ArgumentList 參數。 每個排程工作都必須具有 ScriptBlockFilePath 值。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InitializationScript

指定 Windows PowerShell 腳本的完整路徑 (.ps1)。 初始化腳本會在針對背景作業建立的會話中執行,然後由 ScriptBlock 參數所指定的命令,或由 FilePath 參數指定的腳本。 您可以使用初始化腳本來設定會話,例如新增檔案、函式或別名、建立目錄或檢查必要條件。

若要指定執行主要作業命令的腳本,請使用 FilePath 參數。

如果初始化腳本產生錯誤,包括非終止錯誤,則排程工作的目前實例不會執行,且其狀態為失敗。

類型:ScriptBlock
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定要變更的排程工作。 輸入變數,其中包含 ScheduledJobDefinition 物件,或輸入 ScheduledJobDefinition 物件的命令或表達式,例如 Get-ScheduledJob 命令。 您也可以使用管線將 ScheduledJobDefinition 物件 傳送至 set-ScheduledJob

如果您指定多個排程工作,Set-ScheduledJob 對所有作業進行相同的變更。

類型:ScheduledJobDefinition
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-MaxResultCount

指定排程工作的維護作業結果項目數目。 預設值為 32。

Windows PowerShell 會在磁碟上儲存排程作業的每個觸發實例的執行歷程記錄和結果。 此參數的值會決定為這個排程工作儲存的作業實例結果數目。 當作業實例結果數目超過此值時,Windows PowerShell 會刪除最舊工作實例的結果,以騰出空間讓最新作業實例的結果空間。

作業執行歷程記錄和作業結果會儲存在建立作業之計算機上的 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> 目錄。 若要查看執行歷程記錄,請使用 Get-Job Cmdlet。 若要取得作業結果,請使用 Receive-Job Cmdlet。

MaxResultCount 參數會設定排程作業 ExecutionHistoryLength 屬性值。

若要刪除目前的執行歷程記錄和作業結果,請使用 ClearExecutionHistory 參數。

類型:Int32
Position:Named
預設值:32
必要:False
接受管線輸入:False
接受萬用字元:False

-Name

指定排程工作和排程工作實例的新名稱。 名稱在本機計算機上必須是唯一的。

若要識別要變更的排程工作,請使用 InputObject 參數,或使用管線將排程工作從 Get-ScheduledJob 傳送至 set-ScheduledJob

此參數不會變更磁碟上的作業實例名稱。 它只會影響此命令完成之後啟動的作業實例。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-PassThru

會傳回 物件,代表您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-RunAs32

在32位進程中執行排程的工作。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-RunEvery

用來指定執行作業的頻率。 例如,使用此選項每隔 15 分鐘執行一次作業。

類型:TimeSpan
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-RunNow

一旦執行 Set-ScheduledJob Cmdlet,立即啟動作業。 此參數不需要觸發工作排程器,在註冊之後立即執行 Windows PowerShell 腳本,而且不需要使用者建立指定開始日期和時間的觸發程式。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ScheduledJobOption

設定排程工作的選項。 輸入 ScheduledJobOptions 物件,例如您使用 New-ScheduledJobOption Cmdlet 或哈希表值建立的物件。

您可以在註冊排程工作時設定排程工作的選項,或使用 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
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ScriptBlock

指定排程工作執行的命令。 以大括弧 ({ }) 括住命令,以建立腳本區塊。 若要指定命令參數的預設值,請使用 ArgumentList 參數。

每個 Register-ScheduledJob 命令都必須使用 ScriptBlockFilePath 參數。

類型:ScriptBlock
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Trigger

指定排程工作的觸發程式。 輸入一或多個 ScheduledJobTrigger 物件,例如 New-JobTrigger Cmdlet 傳回的物件,或作業觸發程式索引鍵和值的哈希表。

作業觸發程式會在一次性或週期性排程或事件發生時自動啟動排程工作。

作業觸發程式是選擇性的。 您可以在建立排程工作、使用 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
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

ScheduledJobDefinition

您可以使用管線將排程工作傳送至 Set-ScheduledJob

輸出

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

如果您使用 Passthru 參數,Set-ScheduledJob 會傳回已變更的排程工作。 否則,此 Cmdlet 不會產生任何輸出。