New-JobTrigger
建立排程作業的作業觸發程式。
語法
New-JobTrigger
[-RandomDelay <TimeSpan>]
-At <DateTime>
[-Once]
[-RepetitionInterval <TimeSpan>]
[-RepetitionDuration <TimeSpan>]
[-RepeatIndefinitely]
[<CommonParameters>]
New-JobTrigger
[-DaysInterval <Int32>]
[-RandomDelay <TimeSpan>]
-At <DateTime>
[-Daily]
[<CommonParameters>]
New-JobTrigger
[-WeeksInterval <Int32>]
[-RandomDelay <TimeSpan>]
-At <DateTime>
-DaysOfWeek <DayOfWeek[]>
[-Weekly]
[<CommonParameters>]
New-JobTrigger
[-RandomDelay <TimeSpan>]
[-AtStartup]
[<CommonParameters>]
New-JobTrigger
[-RandomDelay <TimeSpan>]
[-User <String>]
[-AtLogOn]
[<CommonParameters>]
Description
New-JobTrigger Cmdlet 會建立作業觸發程式,以一次性或週期性排程啟動排程的排程,或事件發生時啟動排程作業。
您可以使用 ScheduledJobTrigger 物件,New-JobTrigger 傳回 ,為新的或現有的排程工作設定作業觸發程式。 您也可以使用 Get-JobTrigger Cmdlet 來取得現有排程工作的工作觸發程式,或使用哈希表值來表示作業觸發程式,來建立作業觸發程式。
建立作業觸發程式時,請檢閱 New-ScheduledJobOption Cmdlet 所指定選項的預設值。 這些選項與 工作排程器中的對應選項具有相同的有效和預設值,會影響排程工作的排程和時間。
New-JobTrigger 是 Windows PowerShell 中 PSScheduledJob 模組中其中一個作業排程 Cmdlet 集合。
如需排程工作的詳細資訊,請參閱 PSScheduledJob 模組中的 About 主題。
匯入 PSScheduledJob 模組,然後輸入:Get-Help about_Scheduled*
或查看about_Scheduled_Jobs。
此 Cmdlet 已在 Windows PowerShell 3.0 中引進。
範例
範例 1:排程一次
PS C:\> New-JobTrigger -Once -At "1/20/2012 3:00 AM"
此命令會使用 New-JobTrigger Cmdlet 來建立只啟動排程工作一次的工作觸發程式。 At 參數的值是 Windows PowerShell 轉換成 DateTime 物件的字串。 At 參數值包含明確的日期,而不只是時間。 如果省略日期,就會使用目前的日期和上午 3:00 時間來建立觸發程式,這可能代表過去的時間。
範例 2:每日排程
PS C:\> New-JobTrigger -Daily -At "4:15 AM" -DaysInterval 3
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
0 Daily 9/21/2012 4:15:00 AM True
此命令會建立作業觸發程式,每隔 3 天於上午 4:15 啟動排程工作。
由於 At 參數的值不包含日期,因此目前日期會當做 datetime 物件中的日期值使用。 如果日期和時間過去,排程的工作會在下一次發生時啟動,也就是 3 天后從 At 參數值開始。
範例 3:每周排程
PS C:\> New-JobTrigger -Weekly -DaysOfWeek Monday, Wednesday, Friday -At "23:00" -WeeksInterval 4
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
0 Weekly 9/21/2012 11:00:00 PM {Monday, Wednesday, Friday} True
此命令會建立作業觸發程式,每隔 4 周於星期一、星期三和星期五於 2300 小時 (下午 11:00) 啟動排程工作。
您也可以以整數輸入 DaysOfWeek 參數值,例如 -DaysOfWeek 1, 5
。
範例 4:登入排程
PS C:\> New-JobTrigger -AtLogOn -User Domain01\Admin01
此命令會建立作業觸發程式,每當網域系統管理員登入計算機時,就會啟動排程工作。
範例 5:使用隨機延遲
PS C:\> New-JobTrigger -Daily -At 1:00 -RandomDelay 00:20:00
此命令會建立作業觸發程式,每天上午 1:00 啟動排程工作。 此命令會使用 RandomDelay 參數,將延遲上限設定為 20 分鐘。 因此,作業每天在上午 1:00 到上午 1:20 之間執行,間隔會隨機變化。
您可以使用隨機延遲進行取樣、負載平衡和其他系統管理工作。 設定延遲值時,請檢閱 New-ScheduledJobOption Cmdlet 的有效和預設值,並使用選項設定來協調延遲。
範例 6:為新的排程工作建立作業觸發程式
The first command uses the **New-JobTrigger** cmdlet to create a job trigger that starts a job every Monday, Wednesday, and Friday at 12:01 AM. The command saves the job trigger in the $T variable.
PS C:\> $T = New-JobTrigger -Weekly -DaysOfWeek 1,3,5 -At 12:01AM
The second command uses the Register-ScheduledJob cmdlet to create a scheduled job that starts a job every Monday, Wednesday, and Friday at 12:01 AM. The value of the *Trigger* parameter is the trigger that is stored in the $T variable.
PS C:\> Register-ScheduledJob -Name Test-HelpFiles -FilePath C:\Scripts\Test-HelpFiles.ps1 -Trigger $T
這些命令會使用作業觸發程式來建立新的排程工作。
範例 7:將作業觸發程式新增至排程工作
PS C:\> Add-JobTrigger -Name SynchronizeApps -Trigger (New-JobTrigger -Daily -At 3:10AM)
此範例示範如何將作業觸發程式新增至現有的排程工作。 您可以將多個作業觸發程式新增至任何排程的作業。
命令會使用 Add-JobTrigger Cmdlet,將作業觸發程式新增至 SynchronizeApps 排程工作。 Trigger 參數的值是每天上午 3:10 執行作業的 New-JobTrigger 命令。
當命令完成時,SynchronizeApps 是排程的作業,會在作業觸發程式指定的時間執行。
範例 8:建立重複作業觸發程式
PS C:\> New-JobTrigger -Once -At "09/12/2013 1:00:00" -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration (New-Timespan -Hours 48)
此命令會建立作業觸發程式,從 2013 年 9 月 12 日上午 1:00 開始,每隔 60 分鐘執行一次作業 48 小時。
範例 9:停止重複作業觸發程式
PS C:\> Get-JobTrigger -Name SecurityCheck | Set-JobTrigger -RepetitionInterval 0:00 -RepetitionDuration 0:00
此命令會強制停止 SecurityCheck 作業,此作業會觸發每隔 60 分鐘執行一次,直到其工作觸發程式到期為止。
若要防止作業重複,命令會使用 Get-JobTrigger 來取得 SecurityCheck 作業的工作觸發程式和 Set-JobTrigger Cmdlet,將作業觸發程式的重複間隔和重複持續時間變更為零 (0)。
範例 10:建立每小時作業觸發程式
PS C:\> New-JobTrigger -Once -At "9/21/2012 0am" -RepetitionInterval (New-TimeSpan -Hour 12) -RepetitionDuration ([TimeSpan]::MaxValue)
下列命令會建立作業觸發程式,每隔 12 小時執行一次排程工作一次,以無限期的時間執行一次。 時程表將於明天(2012年9月21日)午夜(上午0:00)開始。
參數
-At
在指定的日期和時間啟動作業。 輸入 DateTime 物件,例如 Get-Date Cmdlet 傳回的物件,或可以轉換成日期和時間的字串串,例如 “April 19, 2012 15:00”、“12/31” 或 “3am”。 如果您未指定日期的專案,例如年份,觸發程式中的日期就會有目前日期的對應專案。
使用 Once 參數時,請將 At 參數的值設定為未來的日期和時間。 因為 DateTime 物件中的預設日期是目前的日期,如果您指定目前時間之前的時間,而沒有明確日期,則會在過去建立作業觸發程式。
DateTime 物件,以及轉換成 DateTime 物件的字串,會自動調整為與控制面板中區域計算機選取的日期和時間格式相容。
類型: | DateTime |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-AtLogOn
當指定的使用者登入計算機時,啟動排程工作。 若要指定使用者,請使用 User 參數。
類型: | SwitchParameter |
Position: | 0 |
預設值: | False |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-AtStartup
在 Windows 啟動時啟動排程工作。
類型: | SwitchParameter |
Position: | 0 |
預設值: | False |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Daily
指定週期性每日作業排程。 使用 Daily 參數集中的其他參數來指定排程詳細數據。
類型: | SwitchParameter |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-DaysInterval
指定每日排程發生次數之間的天數。 例如,值 3 會在 1、4、7 等天啟動排程工作。 預設值為 1。
類型: | Int32 |
Position: | Named |
預設值: | 1 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DaysOfWeek
指定每周排程工作執行的一周天數。 輸入日名稱,例如 「Monday」 或整數 0-6,其中 0 代表星期日。 每周參數集中需要此參數。
日名稱會轉換成作業觸發程式中的整數值。 當您在命令中以引號括住日名稱時,請以個別的引號括住每日名稱,例如 “Monday”、“Tuesday”。 如果您以單引號組括住多天名稱,則會加總對應的整數值。 例如,“Monday, Tuesday” (1, 2) 會產生 “Wednesday” (3) 的值。
類型: | DayOfWeek[] |
接受的值: | Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Once
指定非週期性(一次)或自定義重複排程。 若要建立重複排程,請使用 Once 參數搭配 RepetitionDuration 和 RepetitionInterval 參數。
類型: | SwitchParameter |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-RandomDelay
啟用從排程開始時間開始的隨機延遲,並設定最大延遲值。 延遲的長度會針對每個開始進行虛擬隨機設定,而且不會延遲到此參數的值所指定的時間。 默認值零(00:00:00),會停用隨機延遲。
輸入 timespan 物件,例如 New-TimeSpan Cmdlet 所傳回的物件,或以 <小時>輸入值:<分鐘>:<秒> 格式,這個格式會自動轉換成 TimeSpan 物件。
類型: | TimeSpan |
Position: | Named |
預設值: | 00:00:00 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-RepeatIndefinitely
這個參數可從 Windows PowerShell 4.0 開始提供,因此不需要指定 RepetitionDuration 參數的 TimeSpan.MaxValue 值,以重複執行排程的作業。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-RepetitionDuration
重複工作,直到指定的時間到期為止。 重複頻率取決於 RepetitionInterval 參數的值。 例如,如果 RepetitionInterval 的值是 5 分鐘,且 RepetitionDuration 的值是 2 小時,則會每隔五分鐘觸發一次工作兩小時。
輸入 timespan 物件,例如 New-TimeSpan Cmdlet 傳回的物件,或是可以轉換成時間範圍物件的字串,例如 “1:05:30”。
若要無限期執行作業,請改為新增 RepeatIndefinitely 參數。
若要在作業觸發程式重複期間到期之前停止作業,請使用 Set-JobTrigger Cmdlet 將 RepetitionDuration 值設定為零 (0)。
只有當命令中使用 Once、At 和 RepetitionInterval 參數時,此參數才有效。
類型: | TimeSpan |
Position: | Named |
預設值: | 0 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-RepetitionInterval
在指定的時間間隔重複作業。 例如,如果此參數的值是 2 小時,則會每隔兩小時觸發一次作業。 預設值 0 不會重複作業。
輸入 timespan 物件,例如 New-TimeSpan Cmdlet 傳回的物件,或是可以轉換成時間範圍物件的字串,例如 “1:05:30”。
只有當命令中使用 、At和 RepetitionDuration 參數時,此參數才有效。
類型: | TimeSpan |
Position: | Named |
預設值: | 0 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-User
指定觸發 AtLogon 排程作業開始的使用者。 以 <UserName> 或 <Domain\Username> 格式輸入使用者名稱,或輸入星號 ≦ 代表所有使用者。 預設值為所有使用者。
類型: | String |
Position: | Named |
預設值: | All users |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Weekly
指定週期性每周作業排程。 使用 Weekly 參數集中的其他參數來指定排程詳細數據。
類型: | SwitchParameter |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-WeeksInterval
指定每周作業排程中發生次數之間的周數。 例如,值 3 會在第 1 周、4、7 等周啟動排程工作。 預設值為 1。
類型: | Int32 |
Position: | Named |
預設值: | 1 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None
您無法使用管線將輸入傳送至此 Cmdlet。
輸出
備註
作業觸發程式不會儲存至磁碟。 不過,排程的作業會儲存至磁碟,而且您可以使用 Get-JobTrigger 來取得任何排程作業的作業觸發程式。
New-JobTrigger 不會阻止您建立不會執行排程作業的作業觸發程式,例如過去日期的一次性觸發程式。
Register-ScheduledJob Cmdlet 接受 ScheduledJobTrigger 物件,例如由 new-JobTrigger 或 Get-JobTrigger Cmdlet 所
傳回的,或是具有觸發值的哈希表。 若要提交哈希表,請使用下列索引鍵。
@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am"
(或任何有效的時間字串):DaysOfWeek="Monday", "Wednesday"
(或日間名稱的任何組合):Interval=2
(或任何有效的頻率間隔):RandomDelay="30minutes"
(或任何有效的時間範圍字串):User="Domain1\User01
(或任何有效的使用者;僅搭配 AtLogon 頻率值使用) }
相關連結
- about_Scheduled_Jobs
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Remove-JobTrigger
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob