Set-JobTrigger
變更排程工作的工作觸發程式。
語法
Default (預設值)
Set-JobTrigger
[-InputObject] <ScheduledJobTrigger[]>
[-DaysInterval <Int32>]
[-WeeksInterval <Int32>]
[-RandomDelay <TimeSpan>]
[-At <DateTime>]
[-User <String>]
[-DaysOfWeek <DayOfWeek[]>]
[-AtStartup]
[-AtLogOn]
[-Once]
[-RepetitionInterval <TimeSpan>]
[-RepetitionDuration <TimeSpan>]
[-RepeatIndefinitely]
[-Daily]
[-Weekly]
[-PassThru]
[<CommonParameters>]
Description
Set-JobTrigger Cmdlet 會變更排程工作之作業觸發程式的屬性。 您可以使用它來變更作業開始的時間或頻率,或從以時間為基礎的排程變更為登入或啟動所觸發的排程。
作業觸發程式會定義啟動排程工作的週期性排程或條件。 雖然作業觸發程式不會儲存至磁碟,但您可以變更已排程作業的作業觸發程式,這些觸發程式會儲存至磁碟。
若要變更排程作業的作業觸發程式,請從使用 Get-JobTrigger Cmdlet 開始取得排程作業的作業觸發程式。
然後,使用管線將觸發程式傳送至
當您變更作業觸發程式的類型時,例如將作業觸發程式從每日或每周觸發程式變更為 AtLogon 觸發程式,則會刪除原始觸發程序屬性。 不過,如果您變更觸發程式的值,但不是其類型,例如變更每周觸發程式中的天數,則只會變更您指定的屬性。 原始作業觸發程式的其他所有屬性都會保留。
Set-JobTrigger 是 Windows PowerShell 隨附的 PSScheduledJob 模組中其中一個作業排程 Cmdlet 集合。
如需排程工作的詳細資訊,請參閱 PSScheduledJob 模組中的 About 主題。
匯入 PSScheduledJob 模組,然後輸入:Get-Help about_Scheduled* 或查看about_Scheduled_Jobs。
此 Cmdlet 已在 Windows PowerShell 3.0 中引進。
範例
範例 1:變更作業觸發程式中的天數
PS C:\> Get-JobTrigger -Name "DeployPackage"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 9/29/2011 12:00:00 AM {Wednesday, Saturday} True
The second command uses the Get-JobTrigger cmdlet to get the job trigger of the DeployPackage scheduled job. A pipeline operator (|) sends the trigger to the **Set-JobTrigger** cmdlet, which changes the job trigger so that it starts the DeployPackage job on Wednesdays and Sundays. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> Get-JobTrigger -Name "DeployPackage" | Set-JobTrigger -DaysOfWeek "Wednesday", "Sunday" -Passthru
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 9/29/2011 12:00:00 AM {Wednesday, Sunday} True
此範例示範如何變更每周作業觸發程式中的天數。
第一個命令會使用 Get-JobTrigger Cmdlet 來取得 DeployPackage 排程作業的作業觸發程式。 輸出顯示觸發程式會在星期三和星期六午夜啟動作業。
不需要此命令;它只包含以顯示觸發程式變更的效果。
範例 2:變更作業觸發程序類型
PS C:\> Get-JobTrigger -Name "Inventory"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 9/27/2011 11:00:00 PM True
2 AtStartup True
The second command uses the **Get-JobTrigger** cmdlet to get the *AtStartup* job trigger of the Inventory job. The command uses the *TriggerID* parameter to identify the job trigger. A pipeline operator (|) sends the job trigger to the **Set-JobTrigger** cmdlet, which changes it to a weekly job trigger that runs every four weeks on Monday at midnight. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> Get-JobTrigger -Name "Inventory" -TriggerID 2 | Set-JobTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Monday -At "12:00 AM"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 9/27/2011 11:00:00 PM True
2 Weekly 10/31/2011 12:00:00 AM {Monday} True
此範例示範如何變更啟動作業的作業觸發程序類型。 此範例中的命令會以每周觸發程式取代 AtStartup 作業觸發程式。
第一個命令會使用 Get-JobTrigger Cmdlet 來取得清查排程作業的作業觸發程式。 輸出顯示作業有兩個觸發程式,一個每日觸發程式和一個 AtStartup 觸發程式。
不需要此命令;它只包含以顯示觸發程式變更的效果。
範例 3:變更遠端作業觸發程式上的使用者
PS C:\> Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ScheduledJob | Get-JobTrigger | Where-Object {$_.User} | Set-JobTrigger -User "Domain01/Admin02"}
此命令會變更 Server01 計算機上排程作業的所有 AtLogon 作業觸發程式中的使用者。
此命令會使用 Invoke-Command Cmdlet 在 Server01 計算機上執行命令。
遠端命令會以取得電腦上所有排程工作的 Get-ScheduledJob 命令開始。 排程工作會管線傳送至 Get-JobTrigger Cmdlet,此 Cmdlet 會取得排程工作的作業觸發程式。 每個作業觸發器都包含一個包含計劃作業的 JobDefinition 屬性,因此即使更改了計劃作業,觸發器也保持與計劃作業的關聯。
作業觸發器通過管道傳輸到 Where-Object cmdlet,該 cmdlet 獲取具有 User 屬性的作業觸發器。 選取的作業觸發程式會管線傳送至 Set-JobTrigger Cmdlet,此 Cmdlet 會將用戶變更為 Domain01\Admin02。
範例 4:變更其中一個作業觸發程式
PS C:\> Get-JobTrigger -Name "SecurityCheck"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 4/24/2013 3:00:00 AM True
2 Weekly 4/24/2013 4:00:00 PM {Sunday} True
3 Once 4/24/2013 4:00:00 PM True
The second command uses the **TriggerID** parameter of the **Get-JobTrigger** cmdlet to get the *Once* trigger of the SecurityCheck scheduled job. The command pipes the trigger to the Format-List cmdlet, which displays all of the properties of the *Once* job trigger.The output shows that the trigger starts the job once every hour (RepetitionInterval = 1 hour) for one day (RepetitionDuration = 1 day).
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At : 4/24/2012 4:00:00 PM
DaysOfWeek :
Interval : 1
Frequency : Once
RandomDelay : 00:00:00
RepetitionInterval : 01:00:00
RepetitionDuration : 1.00:00:00
User :
Id : 3
Enabled : True
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
The third command changes the repetition interval of the job trigger from one hour to 90 minutes. The command does not return any output.
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerId 3 | Set-JobTrigger -RepetitionInterval (New-TimeSpan -Minutes 90)
The fourth command displays the effect of the change.The output shows that the trigger starts the job once every 90 minutes (RepetitionInterval = 1 hour, 30 minutes) for one day (RepetitionDuration = 1 day).
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At : 4/24/2012 4:00:00 PM
DaysOfWeek :
Interval : 1
Frequency : Once
RandomDelay : 00:00:00
RepetitionInterval : 01:30:00
RepetitionDuration : 1.00:00:00
User :
Id : 3
Enabled : True
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
此範例中的命令會將 securityCheck 排程工作 的重複間隔從每 60 分鐘變更為每 90 分鐘一次 作業觸發程式。 SecurityCheck 排程工作有三個作業觸發程式,因此命令會使用 Get-JobTrigger Cmdlet 的 TriggerId 參數來識別正在變更的工作觸發程式。
第一個命令使用 Get-JobTrigger cmdlet 獲取 SecurityCheck 計劃作業的所有作業觸發器。 顯示任務觸發器 ID 的輸出顯示 Once 任務觸發器的 ID 為 3。
參數
-At
在指定的日期和時間啟動作業。 輸入 DateTime 物件,例如 Get-Date Cmdlet 傳回的物件,或可以轉換成時間的字串,例如 “April 19, 2012 15:00”、“12/31/2013 9:00 PM” 或 “3am”。
如果您未指定 DateTime 物件的專案,例如秒,則作業觸發程式的該專案不會變更。 如果原始作業觸發程式未包含 DateTime 物件,而且您省略專案,則會使用目前日期和時間的對應專案來建立作業觸發程式。
使用 Once 參數時,請將 At 參數的值設定為特定日期和時間。 因為 DateTime 物件中的預設日期是目前日期,因此設定目前時間之前的時間,而沒有明確日期會導致作業觸發程式過去的時間。
DateTime 物件,以及轉換成 DateTime 物件的字串,會自動調整為與控制面板中區域計算機選取的日期和時間格式相容。
參數屬性
| 類型: | DateTime |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-AtLogOn
當指定的使用者登入計算機時,啟動排程工作。 若要指定使用者,請使用 User 參數。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-AtStartup
在 Windows 啟動時啟動排程工作。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Daily
指定週期性每日作業排程。 使用 Daily 參數集中的其他參數來指定排程詳細數據。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-DaysInterval
指定每日排程發生次數之間的天數。 例如,值 3 會在 1、4、7 等天啟動排程工作。 預設值為 1。
參數屬性
| 類型: | Int32 |
| 預設值: | 1 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-DaysOfWeek
指定每周排程工作執行的一周天數。 輸入日期名稱,例如 Monday、Thursday、整數 0-6(其中 0 表示星期日)或星號 (*) 表示每天。 每周參數集中需要此參數。
日名稱會轉換成作業觸發程式中的整數值。 當您在命令中以引號括住日名稱時,請以個別的引號括住每日名稱,例如 “Monday”、“Tuesday”。 如果您以單引號組括住多天名稱,則會加總對應的整數值。 例如,“Monday, Tuesday” (1, 2) 會產生 “Wednesday” (3) 的值。
參數屬性
| 類型: | DayOfWeek[] |
| 預設值: | None |
| 接受的值: | Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定作業觸發程式。
輸入變數,其中包含 ScheduledJobTrigger 物件,或輸入 ScheduledJobTrigger 物件的命令或表達式,例如 Get-JobTrigger 命令。
您也可以使用管線
如果您指定多個作業觸發程式,Set-JobTrigger 對所有作業觸發程式進行相同的變更。
參數屬性
| 類型: | ScheduledJobTrigger[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Once
指定非週期性 (一次) 排程。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-PassThru
傳回已變更的工作觸發程式。 根據預設,此 Cmdlet 不會產生任何輸出。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-RandomDelay
啟用從排程開始時間開始的隨機延遲,並設定最大延遲值。 延遲的長度會針對每個開始進行虛擬隨機設定,而且不會延遲到此參數的值所指定的時間。 默認值零(00:00:00),會停用隨機延遲。
輸入 timespan 物件,例如 New-TimeSpan Cmdlet 所傳回的物件,或以 <小時>輸入值:<分鐘>:<秒> 格式,自動轉換成時間範圍物件。
參數屬性
| 類型: | TimeSpan |
| 預設值: | 00:00:00 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-RepeatIndefinitely
這個參數可從 Windows PowerShell 4.0 開始提供,因此不需要指定 RepetitionDuration 參數的 TimeSpan.MaxValue 值,以重複執行排程的作業。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-RepetitionDuration
重複工作,直到指定的時間到期為止。 重複頻率取決於 RepetitionInterval 參數的值。 例如,如果 RepetitionInterval 的值是 5 分鐘,且 RepetitionDuration 的值是 2 小時,則會每隔五分鐘觸發一次工作兩小時。
輸入 timespan 物件,例如 New-TimeSpan Cmdlet 傳回的物件,或是可以轉換成時間範圍物件的字串,例如 “1:05:30”。
若要無限期執行作業,請改為新增 RepeatIndefinitely 參數。
若要在作業觸發程式重複期間到期之前停止作業,請將 [重複工期] 設定為 [RepetitionDuration 值設定為零 (0)。
若要變更 一次 作業觸發程式的重複持續時間或重複間隔,命令必須同時包含 RepetitionInterval 和 RepetitionDuration 參數。 若要變更其他類型的作業觸發程式的重複期間或重複間隔,命令必須包含一次 一次、At、RepetitionInterval 和 RepetitionDuration 參數。
參數屬性
| 類型: | TimeSpan |
| 預設值: | 0 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-RepetitionInterval
在指定的時間間隔重複作業。 例如,如果此參數的值是 2 小時,則會每隔兩小時觸發一次作業。 預設值 0 不會重複作業。
輸入 timespan 物件,例如 New-TimeSpan Cmdlet 傳回的物件,或是可以轉換成時間範圍物件的字串,例如 “1:05:30”。
若要變更 一次 作業觸發程式的重複持續時間或重複間隔,命令必須同時包含 RepetitionInterval 和 RepetitionDuration 參數。 若要變更其他類型的作業觸發程式的重複期間或重複間隔,命令必須包含一次 一次、At、RepetitionInterval 和 RepetitionDuration 參數。
參數屬性
| 類型: | TimeSpan |
| 預設值: | 0 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-User
指定觸發 AtLogon 排程作業開始的使用者。 以 <UserName> 或 <Domain\Username> 格式輸入使用者名稱,或輸入星號 ≦ 代表所有使用者。 預設值為所有使用者。
參數屬性
| 類型: | String |
| 預設值: | All users |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Weekly
指定週期性每周作業排程。 使用 Weekly 參數集中的其他參數來指定排程詳細數據。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-WeeksInterval
指定每周作業排程中發生次數之間的周數。 例如,值 3 會在第 1 周、4、7 等周啟動排程工作。 預設值為 1。
參數屬性
| 類型: | Int32 |
| 預設值: | 1 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
ScheduledJobTrigger
您可以通過管道將多個作業觸發器傳遞給 Set-JobTrigger。
輸出
None or Microsoft.PowerShell.ScheduledJob.ScheduledJobTrigger
當您使用 Passthru 參數時,Set-JobTrigger 會傳回已變更的工作觸發程式。 否則,此 Cmdlet 不會產生任何輸出。
備註
- 作業觸發器具有 JobDefintion 屬性,用於將其與計劃的作業相關聯。 當您變更排程作業的作業觸發程式時,作業就會變更。 您不需要使用 Set-ScheduledJob 命令,即可將變更的觸發程式套用至排程的工作。