New-JobTrigger

建立排程作業的作業觸發程式。

Syntax

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

Cmdlet New-JobTrigger 會建立作業觸發程式,以一次性或週期性排程啟動排程工作,或事件發生時啟動排程工作。

您可以使用傳回的 ScheduledJobTrigger 物件 New-JobTrigger ,為新的或現有的排程工作設定作業觸發程式。 您也可以使用 Get-JobTrigger Cmdlet 建立作業觸發程式,以取得現有排程工作的工作觸發程式,或使用哈希表值來表示作業觸發程式。

建立作業觸發程式時,請檢閱 Cmdlet 所 New-ScheduledJobOption 指定選項的預設值。 這些選項與工作排程器對應的選項具有相同有效和預設值,會影響排程工作的排程和時間。

New-JobTrigger 是 WINDOWS PowerShell 隨附的 PSScheduledJob 模組中作業排程 Cmdlet 的其中一個集合。

如需排程工作的詳細資訊,請參閱 PSScheduledJob 模組中的 About 主題。 匯入 PSScheduledJob 模組,然後輸入: Get-Help about_Scheduled* 或查看 about_Scheduled_Jobs

此 Cmdlet 已在 Windows PowerShell 3.0 中引進。

範例

範例 1:排程一次

此範例會建立作業觸發程式,只啟動排程工作一次。

New-JobTrigger -Once -At "1/20/2012 3:00 AM"

建立 New-JobTrigger 作業觸發程式的 Cmdlet 只會啟動排程工作一次。 At 參數的值是 Windows PowerShell 轉換成 DateTime 物件的字串。

At 參數值包含明確的日期,而不只是時間。 如果省略日期,就會使用目前的日期和上午 3:00 時間來建立觸發程式,這可能代表過去的時間。

範例 2:每日排程

此範例會建立新的作業觸發程式,以每隔第三天啟動排程工作。

New-JobTrigger -Daily -At "4:15 AM" -DaysInterval 3

此命令會建立作業觸發程式,每隔 3 天於上午 4:15 啟動排程工作。

由於 At 參數的值不包含日期,因此目前的日期會當做 DateTime 物件中的日期值使用。 如果日期和時間過去,排程的工作會在下一次發生時啟動,也就是 3 天后從 At 參數值開始。

範例 3:每周排程

此範例會建立作業觸發程式,該觸發程式會在該周的指定天數每隔第四周啟動排程工作。

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:登入排程

此範例會建立作業觸發程式,以在特定使用者的登入時啟動排程工作。

New-JobTrigger -AtLogOn -User Domain01\Admin01

此命令會建立作業觸發程式,以在網域系統管理員登入計算機時啟動排程工作。

範例 5:使用隨機延遲

此範例會建立具有隨機時間範圍延遲的新作業觸發程式。

New-JobTrigger -Daily -At 1:00 -RandomDelay 00:20:00

此命令會建立作業觸發程式,每天上午 1:00 啟動排程工作。 此命令會 使用 RandomDelay 參數,將延遲上限設定為 20 分鐘。 因此,作業每天在上午 1:00 到上午 1:20 之間執行,間隔會隨機變化。

您可以使用隨機延遲進行取樣、負載平衡和其他系統管理工作。 設定延遲值時,請檢閱 Cmdlet 的有效和 New-ScheduledJobOption 預設值,並使用選項設定來協調延遲。

範例 6:為新的排程工作建立作業觸發程式

這些範例會使用作業觸發程式來建立新的排程工作。

$t = New-JobTrigger -Weekly -DaysOfWeek 1,3,5 -At 12:01AM
Register-ScheduledJob -Name Test-HelpFiles -FilePath C:\Scripts\Test-HelpFiles.ps1 -Trigger $t

第一個命令會 New-JobTrigger 使用 Cmdlet 建立作業觸發程式,以在上午 12:01 開始作業。 命令會將作業觸發程式儲存在變數中 $t

第二個命令會 Register-ScheduledJob 使用 Cmdlet 來建立排程工作,以在每個星期一、星期三和星期五上午 12:01 啟動作業。 Trigger 參數的值是儲存在變數中的$t觸發程式。

範例 7:將作業觸發程式新增至排程工作

此範例示範如何將作業觸發程式新增至現有的排程工作。

Add-JobTrigger -Name SynchronizeApps -Trigger (New-JobTrigger -Daily -At 3:10AM)

您可以將多個作業觸發程式新增至任何排程的作業。

命令會 Add-JobTrigger 使用 Cmdlet 將作業觸發程式新增至 SynchronizeApps 排程工作。 Trigger 參數的值是一個New-JobTrigger命令,每天上午 3:10 執行作業。

當命令完成時, SynchronizeApps 是排程的作業,會在作業觸發程式指定的時間執行。

範例 8:建立重複作業觸發程式

此範例會建立重複的作業觸發程式,只執行特定時間。

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:停止重複作業觸發程式

此範例會停止重複的工作觸發程式。

Get-JobTrigger -Name SecurityCheck | Set-JobTrigger -RepetitionInterval 0:00 -RepetitionDuration 0:00

此命令會強制停止 SecurityCheck 作業,此作業會觸發每隔 60 分鐘執行一次,直到其工作觸發程式到期為止。

為了防止作業重複,命令會使用 Get-JobTrigger 取得 SecurityCheck 作業的作業Set-JobTrigger觸發程式和 Cmdlet,將作業觸發程式的重複間隔和重複持續時間變更為零 (0)。

範例 10:建立每小時作業觸發程式

此範例會建立無限期執行的重複作業觸發程式。

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:0012/313am。 如果您未指定日期的專案,例如年份,觸發程式中的日期就會有目前日期的對應專案。

使用 Once 參數時,將 At 參數的值設定為未來的日期和時間。 由於 DateTime 物件中的預設日期是目前日期,因此如果您指定目前時間之前的時間,而沒有明確日期,則會針對過去的時間建立作業觸發程式。

轉換成 DateTime 物件的 DateTime 物件和字串會自動調整為與 控制台 中針對本機電腦選取的日期和時間格式相容。

Type:DateTime
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-AtLogOn

當指定的使用者登入計算機時,啟動排程工作。 若要指定使用者,請使用 User 參數。

Type:SwitchParameter
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-AtStartup

在 Windows 啟動時啟動排程工作。

Type:SwitchParameter
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Daily

指定週期性每日作業排程。 使用 Daily 參數集中的其他參數來指定排程詳細數據。

Type:SwitchParameter
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DaysInterval

指定每日排程發生次數之間的天數。 例如,的值 3 會在天數 147 等等啟動排程工作。 預設值是 1

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DaysOfWeek

指定每周排程工作執行的一周天數。 輸入日名稱,例如 Monday 或 整數60- ,其中 0 代表星期日。 每周參數集中需要此參數。

日名稱會轉換成作業觸發程式中的整數值。 當您在命令中以引號括住日名稱時,請以個別的引號括住每日名稱,例如 "Monday", "Tuesday"。 如果您以單引號組括住多天名稱,則會加總對應的整數值。 例如, "Monday, Tuesday"1 + 2) 會產生 (3) 的值Wednesday

Type:DayOfWeek[]
Accepted values:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Once

指定非週期性(一次)或自定義重複排程。 若要建立重複排程,請使用 Once 參數搭配 RepetitionDurationRepetitionInterval 參數。

Type:SwitchParameter
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-RandomDelay

啟用從排程開始時間開始的隨機延遲,並設定最大延遲值。 延遲的長度會針對每個開始進行虛擬隨機設定,而且不會延遲到此參數的值所指定的時間。 預設值零 (00:00:00), 會停用隨機延遲。

輸入 timespan 物件,例如 Cmdlet 所 New-TimeSpan 傳回的物件,或以格式輸入值,這個格式 <hours>:<minutes>:<seconds> 會自動轉換成 TimeSpan 物件。

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RepeatIndefinitely

此參數可從 Windows PowerShell 4.0 開始提供,因此不需要指定 RepetitionDuration 參數的 TimeSpan.MaxValue,以重複執行排程工作,以無限期執行。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RepetitionDuration

重複工作,直到指定的時間到期為止。 重複頻率取決於 RepetitionInterval 參數的值。 例如,如果 RepetitionInterval 的值是 5 分鐘,而 RepetitionDuration 的值是 2 小時,則會每隔五分鐘觸發一次工作兩個小時。

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

若要無限期執行作業,請改為新增 RepeatIndefinitely 參數。

若要在作業觸發程式重複持續時間到期之前停止作業,請使用 Set-JobTrigger Cmdlet 將 RepetitionDuration 值設定為零 (0)。

只有當命令中使用 Once、At 和 RepetitionInterval 參數時,此參數才有效。

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RepetitionInterval

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

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

只有當命令中使用 Once、At 和 RepetitionDuration 參數時,此參數才有效。

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-User

指定觸發 排程作業之 AtLogon 開始的使用者。 以 或 格式輸入使用者 <UserName> 的名稱, <Domain\Username> 或輸入星號 (*) 來代表所有使用者。 預設值為所有使用者。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Weekly

指定週期性每周作業排程。 使用 Weekly 參數集中的其他參數來指定排程詳細數據。

Type:SwitchParameter
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-WeeksInterval

指定每周作業排程中發生次數之間的周數。 例如,的值3會在周 1、、 47 等上啟動排程工作。 預設值是 1

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

None

您無法使用管線將物件傳送至此 Cmdlet。

輸出

ScheduledJobTrigger

此 Cmdlet 會傳 回代表所建立觸發程式的 ScheduledJobTrigger 物件。

備註

  • 作業觸發程式不會儲存至磁碟。 不過,排程工作會儲存至磁碟,而您可以使用 Get-JobTrigger 來取得任何排程作業的作業觸發程式。

  • New-JobTrigger 不會阻止您建立不會執行排程作業的作業觸發程式,例如過去日期的一次性觸發程式。

  • Cmdlet Register-ScheduledJob 接受 ScheduledJobTrigger 物件,例如 或 Get-JobTrigger Cmdlet 所New-JobTrigger傳回的物件,或具有觸發值的哈希表。

    若要提交哈希表,請使用下列索引鍵。

    • FrequencyOnce、、 DailyWeeklyAtStartupAtLogon
    • 時間:任何有效的時間字串,例如 3am
    • DaysOfWeek:日名稱的任何組合,例如字串 "Monday", "Wednesday"
    • 間隔:任何有效的頻率間隔做為整數
    • RandomDelay:任何有效的時間範圍字串,例如 30minutes
    • 使用者:任何有效的使用者,例如 Domain1\User01;僅搭配 AtLogon 頻率值使用