共用方式為


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 參數搭配 RepetitionDurationRepetitionInterval 參數。

類型: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)。

只有當命令中使用 OnceAtRepetitionInterval 參數時,此參數才有效。

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

-RepetitionInterval

在指定的時間間隔重複作業。 例如,如果此參數的值是 2 小時,則會每隔兩小時觸發一次作業。 預設值 0 不會重複作業。

輸入 timespan 物件,例如 New-TimeSpan Cmdlet 傳回的物件,或是可以轉換成時間範圍物件的字串,例如 “1:05:30”。

只有當命令中使用 AtRepetitionDuration 參數時,此參數才有效。

類型: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。

輸出

ScheduledJobTrigger

備註

  • 作業觸發程式不會儲存至磁碟。 不過,排程的作業會儲存至磁碟,而且您可以使用 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 頻率值使用) }