共用方式為


Set-JobTrigger

變更排程工作的工作觸發程式。

語法

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

Cmdlet 會 Set-JobTrigger 變更排程工作之作業觸發程序的屬性。 您可以使用它來變更作業開始的時間或頻率,或從以時間為基礎的排程變更為登入或啟動所觸發的排程。

作業觸發程式會定義啟動排程工作的週期性排程或條件。 雖然作業觸發程式不會儲存至磁碟,但您可以變更已排程作業的作業觸發程式,這些觸發程式會儲存至磁碟。

若要變更排程作業的作業觸發程式,請從使用 Get-JobTrigger Cmdlet 取得排程作業的作業觸發程序開始。 然後,使用管線將觸發程式傳送至Set-JobTrigger變數,或使用 Cmdlet 的 Set-JobTrigger InputObject 參數來識別觸發程式。 使用的 Set-JobTrigger 其餘參數來變更作業觸發程式。

當您變更作業觸發程式的類型時,例如將作業觸發程式從每日或每周觸發程式變更為 AtLogon 觸發程式時,會刪除原始觸發程式屬性。 不過,如果您變更觸發程式的值,但不是其類型,例如變更每周觸發程式中的天數,則只會變更您指定的屬性。 原始作業觸發程式的其他所有屬性都會保留。

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

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

此 Cmdlet 已在 Windows PowerShell 3.0 中引進。

範例

範例 1:變更作業觸發程式中的天數

此範例示範如何變更每周作業觸發程式中的天數。

Get-JobTrigger -Name "DeployPackage"

Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Weekly          9/29/2011 12:00:00 AM  {Wednesday, Saturday}   True

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 觸發程式。 輸出顯示觸發程式會在星期三和星期六午夜啟動作業。

第二個命令會 Get-JobTrigger 使用 Cmdlet 來取得排程工作的工作 DeployPackage 觸發程式。 管線運算符 (|) 會將觸發程式傳送至 Set-JobTrigger Cmdlet,這會變更作業觸發程式,使其在星期三和星期日啟動 DeployPackage 作業。 此命令會 使用Passthru 參數在變更之後傳回觸發程式。

不需要此命令;它只包含以顯示觸發程式變更的效果。

範例 2:變更作業觸發程序類型

此範例示範如何變更啟動作業的作業觸發程序類型。 此範例中的命令會以每周觸發程式取代 AtStartup 作業觸發程式。

Get-JobTrigger -Name "Inventory"

Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           9/27/2011 11:00:00 PM                          True
2          AtStartup                                                      True

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

第一個命令會 Get-JobTrigger 使用 Cmdlet 來取得排程工作的工作 Inventory 觸發程式。 輸出顯示作業有兩個觸發程式,一個每日觸發程式和一個 AtStartup 觸發程式。

第二個命令會Get-JobTrigger使用 Cmdlet 來取得作業的 Inventory AtStartup 作業觸發程式。 命令會使用 TriggerID 參數來識別作業觸發程式。 管線運算符 (|) 會將作業觸發程式傳送至 Set-JobTrigger Cmdlet,這會將其變更為每週一午夜每四周執行一次的作業觸發程式。 此命令會 使用Passthru 參數在變更之後傳回觸發程式。

不需要此命令;它只包含以顯示觸發程式變更的效果。

範例 3:變更遠端作業觸發程式上的使用者

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,以取得排程工作的工作觸發程式。 每個作業觸發程式都包含 包含排程工作的 JobDefinition 屬性,因此觸發程式會維持與排程工作相關聯的狀態,即使變更也一樣。

作業觸發程式會透過管線傳送至 Where-Object Cmdlet,此 Cmdlet 會取得具有 User 屬性的作業觸發程式。 選取的作業觸發程式會管線傳送至 Set-JobTrigger Cmdlet,而 Cmdlet 會將使用者變更為 Domain01\Admin02

範例 4:變更其中一個作業觸發程式

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

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

Get-JobTrigger -Name "SecurityCheck" -TriggerId 3 | Set-JobTrigger -RepetitionInterval (New-TimeSpan -Minutes 90)
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 Once 作業觸發程式的重複間隔從每 60 分鐘變更為每 90 分鐘一次。 排SecurityCheck程工作有三個作業觸發程式,因此命令會使用 Cmdlet 的 Get-JobTrigger TriggerId 參數來識別正在變更的工作觸發程式。

第一個命令會 Get-JobTrigger 使用 Cmdlet 來取得排程工作的所有作業觸發 SecurityCheck 程式。 輸出會顯示作業觸發程式的標識碼,會顯示一旦作業觸發程式具有3標識符

第二個命令會使用 Cmdlet 的 Get-JobTrigger TriggerID 參數來取得排程作業的 SecurityCheck Once 觸發程式。 命令會將觸發程式傳送至 Format-List Cmdlet,此 Cmdlet 會顯示 Once 作業觸發程式的所有屬性。 輸出顯示觸發程式會每小時啟動一次作業(RepetitionInterval 為 1 小時)一天(RepetitionDuration 為 1 天)。

第三個命令會將作業觸發程式的重複間隔從一小時變更為 90 分鐘。 命令不會傳回任何輸出。

第四個命令會顯示變更的效果。輸出顯示觸發程式每隔 90 分鐘啟動一次作業(RepetitionInterval 為 1 小時 30 分鐘)一天 (RepetitionDuration 為 1 天)。

參數

-At

在指定的日期和時間啟動作業。 輸入 DateTime 物件,例如 Get-Date Cmdlet 傳回的物件,或可轉換成時間的字串,例如 April 19, 2012 15:0012/31/2013 9:00 PM3am

如果您未指定 DateTime 物件的專案,例如秒,則作業觸發程式的該專案不會變更。 如果原始作業觸發程式未包含 DateTime 物件,而且您省略專案,則會使用目前日期和時間的對應專案來建立作業觸發程式。

使用 Once 參數時,將 At 參數的值設定為特定的日期和時間。 因為 DateTime 物件中的預設日期是目前日期,因此設定目前時間之前的時間,而沒有明確日期會導致過去某個時間的作業觸發程式。

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

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

-AtLogOn

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

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

-AtStartup

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

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

-Daily

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

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

-DaysInterval

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

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

-DaysOfWeek

指定每周排程工作執行的一周天數。 輸入日名稱,例如 Monday、、Thursday整數06-、代表0星期日或星號 (*) 來表示每天。 每周參數集中需要此參數。

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

類型:DayOfWeek[]
接受的值:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定作業觸發程式。 輸入包含 ScheduledJobTrigger 物件的變數,或輸入取得 ScheduledJobTrigger 物件的命令或表達式,例如Get-JobTrigger命令。 您也可以使用管線將 ScheduledJobTrigger 物件傳送至 Set-JobTrigger

如果您指定多個作業觸發程式, Set-JobTrigger 請對所有作業觸發程式進行相同的變更。

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

-Once

指定非週期性 (一次) 排程。

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

-PassThru

傳回已變更的工作觸發程式。 根據預設,此 Cmdlet 不會產生任何輸出。

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

-RandomDelay

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

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

類型:TimeSpan
Position:Named
預設值:None
必要: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 傳回的物件,或是可以轉換成 timespan 物件的字串,例如 1:05:30

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

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

若要變更一次作業觸發程式的重複期間或重複間隔,命令必須同時包含 RepetitionIntervalRepetitionDuration 參數。 若要變更其他類型的作業觸發程式的重複持續時間或重複間隔,命令必須包含 Once、At、RepetitionInterval 和 RepetitionDuration 參數。

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

-RepetitionInterval

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

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

若要變更一次作業觸發程式的重複期間或重複間隔,命令必須同時包含 RepetitionIntervalRepetitionDuration 參數。 若要變更其他類型的作業觸發程式的重複持續時間或重複間隔,命令必須包含 Once、At、RepetitionInterval 和 RepetitionDuration 參數。

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

-User

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

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

-Weekly

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

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

-WeeksInterval

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

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

輸入

ScheduledJobTrigger

您可以使用管線將作業觸發程式傳送至此 Cmdlet。

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

ScheduledJobTrigger

當您使用 PassThru 參數時,此 Cmdlet 會傳回它變更的作業觸發程式。

備註

  • 作業觸發程式具有 JobDefinition 屬性,可將它們與排程的工作產生關聯。 當您變更排程作業的作業觸發程式時,作業就會變更。 您不需要使用 Set-ScheduledJob 命令將變更的觸發程式套用至排程的工作。