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>]
说明
Set-JobTrigger cmdlet 可更改计划作业的作业触发器的属性。 可以使用它更改作业启动的时间或频率,或者从基于时间的计划更改为由登录或启动触发的计划。
作业触发器定义用于启动计划作业的定期计划或条件。 虽然作业触发器未保存到磁盘,但可以更改已保存到磁盘的计划作业的作业触发器。
若要更改计划作业的作业触发器,应首先使用 Get-JobTrigger cmdlet 来获取计划作业的作业触发器。 然后,通过管道将触发器传递给 Set-JobTrigger 或将其保存在某个变量中,并且使用 cmdlet 的 InputObject 参数来标识触发器。Set-JobTrigger
使用 Set-JobTrigger 的其余参数来更改作业触发器。
更改作业触发器的类型(例如将作业触发器从每日或每周触发器更改为 AtLogon 触发器),将删除原始触发器属性。 但是,如果更改触发器的值,但不更改其类型,例如更改每周触发器中的天数,则只会更改指定的属性。 保留原始作业触发器的所有其他属性。
Set-JobTrigger 是 WINDOWS PowerShell 中包含的 PSScheduledJob 模块中作业计划 cmdlet 的集合之一。
有关计划作业的详细信息,请参阅 PSScheduledJob 模块中的“关于”主题。 导入 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,此 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 获取 作业的 AtStartup 作业触发器。Inventory 该命令使用 TriggerId 参数来标识作业触发器。 管道运算符 (|) 将该作业触发器发送到 Set-JobTrigger cmdlet,此 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,此 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
此示例中的命令将 计划作业的 Once 作业触发器的重复间隔时间从每 60 分钟更改为每 90 分钟。SecurityCheck
SecurityCheck 计划作业具有三个作业触发器,因此该命令使用 cmdlet 的 TriggerId 参数标识所更改的作业触发器。Get-JobTrigger
第一个命令使用 Get-JobTrigger cmdlet 获取 SecurityCheck 计划作业的所有作业触发器。 显示作业触发器 ID 的输出显示 一旦 作业触发器具有 ID3。
第二个命令使用 cmdlet 的 Get-JobTrigger 参数 SecurityCheck 触发器一次。 此命令通过管道将触发器发送给 Format-List cmdlet,此 cmdlet 显示 Once 作业触发器的所有属性。 该输出显示,触发器每 4 小时启动作业一次(RepetitionInterval 为 1 小时)且持续时间为一天(RepetitionDuration 为 1 天)。
第三个命令将作业触发器的重复间隔时间从 1 小时更改为 90 分钟。 该命令不返回任何输出。
第四个命令显示变更的影响。该输出显示,触发器每 90 分钟启动作业一次(RepetitionInterval 为 1 小时 30 分钟)且持续时间为一天(RepetitionDuration 为 1 天)。
参数
-At
在指定的日期和时间启动作业。 输入一个 DateTime 对象,例如 cmdlet 返回的对象,或者输入一个可转换为时间的字符串,例如 Get-Date、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 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-AtStartup
在 Windows 启动时启动计划作业。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Daily
指定定期每日作业计划。 使用 Daily 参数集中的其他参数指定计划详细信息。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-DaysInterval
指定每日计划发生之间的天数。 例如,3 值在 1、4、7 等天启动计划作业。 默认值是 1。
参数属性
| 类型: | Int32 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-DaysOfWeek
指定每周计划作业运行的一周中的天数。 输入星期几名称(例如 Monday、Thursday)、整数 0-6(其中 0 表示星期天)或者输入一个星号 (*) 来表示每一天。
Weekly 参数集中需要此参数。
日期名称将转换为作业触发器中的整数值。 在命令中将日名称括在引号中时,请将每天的名称用单独的引号引起来,例如 "Monday", "Tuesday"。 如果将多天名称括在单引号对中,则将相应的整数值求和。 例如,"Monday, Tuesday"(1 + 2)产生 Wednesday 值(3)。
参数属性
| 类型: | |
| 默认值: | None |
| 接受的值: | Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-InputObject
指定作业触发器。 输入一个变量,其中包含 ScheduledJobTrigger 对象或键入 ScheduledJobTrigger 对象(如 Get-JobTrigger 命令)的命令或表达式。
还可以通过管道将 ScheduledJobTrigger 对象传递给 Set-JobTrigger。
如果指定多个作业触发器,则 Set-JobTrigger 将对所有作业触发器做出相同的更改。
参数属性
| 类型: | |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Once
指定非定期(一次)计划。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-PassThru
返回已更改的作业触发器。 默认情况下,此 cmdlet 不生成任何输出。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-RandomDelay
启用在计划开始时间开始的随机延迟,并设置最大延迟值。
延迟的长度是针对每个开始的伪随机设置的,从不延迟到此参数的值指定的时间不等。 默认值零(00:00:00),将禁用随机延迟。
输入一个时间跨度对象(例如 New-TimeSpan cmdlet 返回的对象),或输入采用 <hours>:<minutes>:<seconds> 格式的值(会自动转换为时间跨度对象)。
参数属性
| 类型: | TimeSpan |
| 默认值: | None |
| 支持通配符: | 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 小时,则作业每 5 分钟触发一次两小时。
输入时间跨度对象,例如 New-TimeSpan cmdlet 返回的一个,或者可以转换为时间跨度对象的字符串,例如 1:05:30。
若要无限期运行作业,请改为添加 RepeatIndefinitely 参数。
若要在作业触发器重复持续时间到期之前停止作业,请将 RepetitionDuration 值设置为零 ()。0
若要更改 作业触发器的重复持续时间或重复间隔,该命令必须同时包括 RepetitionInterval 和 RepetitionDuration 参数。 若要更改其他类型的作业触发器的重复持续时间或重复间隔,该命令必须包括 Once、At、RepetitionInterval 和 RepetitionDuration 参数。
参数属性
| 类型: | TimeSpan |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-RepetitionInterval
按指定的时间间隔重复作业。 例如,如果此参数的值为 2 小时,则每隔两小时触发一次作业。 默认值 0不重复作业。
输入时间跨度对象,例如 New-TimeSpan cmdlet 返回的一个,或者可以转换为时间跨度对象的字符串,例如 1:05:30。
若要更改 作业触发器的重复持续时间或重复间隔,该命令必须同时包括 RepetitionInterval 和 RepetitionDuration 参数。 若要更改其他类型的作业触发器的重复持续时间或重复间隔,该命令必须包括 Once、At、RepetitionInterval 和 RepetitionDuration 参数。
参数属性
| 类型: | TimeSpan |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-User
指定触发 AtLogon 计划作业开始的用户。 输入 <UserName> 或 <Domain>\<Username> 格式的用户名称,或输入星号(*)来表示所有用户。 默认值为所有用户。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Weekly
指定定期每周作业计划。 使用 Weekly 参数集中的其他参数来指定计划详细信息。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-WeeksInterval
指定每周作业计划发生之间的周数。 例如,值 3 在周 1、4、7 等周启动计划作业。 默认值是 1。
参数属性
| 类型: | Int32 |
| 默认值: | None |
| 支持通配符: | 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
可以通过管道将作业触发器传递给此 cmdlet。
输出
None
默认情况下,此 cmdlet 不返回任何输出。
ScheduledJobTrigger
当使用 PassThru 参数时,此 cmdlet 返回它已更改的作业触发器。
备注
- 作业触发器具有一个将其与计划作业相关联的 JobDefintion 属性。 更改计划作业的作业触发器时,作业将发生更改。 无需使用
Set-ScheduledJob命令即可将更改的触发器应用于计划作业。
相关链接
- 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