New-JobTrigger

为计划作业创建作业触发器。

语法

Once (默认值)

New-JobTrigger
    -At <DateTime>
    [-RandomDelay <TimeSpan>]
    [-Once]
    [-RepetitionInterval <TimeSpan>]
    [-RepetitionDuration <TimeSpan>]
    [-RepeatIndefinitely]
    [<CommonParameters>]

Daily

New-JobTrigger
    -At <DateTime>
    [-DaysInterval <Int32>]
    [-RandomDelay <TimeSpan>]
    [-Daily]
    [<CommonParameters>]

Weekly

New-JobTrigger
    -At <DateTime>
    -DaysOfWeek <DayOfWeek[]>
    [-WeeksInterval <Int32>]
    [-RandomDelay <TimeSpan>]
    [-Weekly]
    [<CommonParameters>]

AtStartup

New-JobTrigger
    [-RandomDelay <TimeSpan>]
    [-AtStartup]
    [<CommonParameters>]

AtLogon

New-JobTrigger
    [-RandomDelay <TimeSpan>]
    [-User <String>]
    [-AtLogOn]
    [<CommonParameters>]

说明

New-JobTrigger cmdlet 创建一个作业触发器,该触发器按一次性或定期计划启动计划作业,或者在事件发生时启动计划作业。

可以使用 ScheduledJobTrigger 对象 New-JobTrigger 返回来设置新作业或现有计划作业的作业触发器。 还可以通过使用 Get-JobTrigger cmdlet 获取现有计划作业的作业触发器,或使用哈希表值来表示作业触发器来创建作业触发器。

创建作业触发器时,请查看由 New-ScheduledJobOption cmdlet 指定的选项的默认值。 这些选项与 任务计划程序中的相应选项具有相同的有效值和默认值,会影响计划作业的计划和时间。

New-JobTrigger 是 PSScheduledJob 模块中包含的作业计划 cmdlet 集合之一。

有关计划作业的详细信息,请参阅 PSScheduledJob 模块中的“关于”主题。 导入 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

此命令创建一个作业触发器,该触发器在凌晨 4:15 每隔 3 天启动计划作业。

由于 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 参数的值是 New-JobTrigger 命令,该命令每天凌晨 3:10 运行作业。

命令完成后,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 小时运行一次计划作业,以无限期运行一次。 日程安排将于明天午夜(上午0:00)开始(2012/9/21)。

参数

-At

在指定的日期和时间启动作业。 输入 DateTime 对象,例如 Get-Date cmdlet 返回的对象,或可转换为日期和时间的字符串,例如“2012 年 4 月 19 日 15:00”、“12/31”或“3am”。 如果未指定日期的元素(如年份),则触发器中的日期具有当前日期中的相应元素。

使用 Once 参数时,请将 At 参数的值设置为将来的日期和时间。 由于 DateTime 对象中的默认日期是当前日期,因此,如果在当前时间之前指定了没有显式日期的时间,则会在过去创建作业触发器。

DateTime 对象以及转换为 DateTime 对象的字符串会自动调整为与控制面板中本地计算机选择的日期和时间格式兼容。

参数属性

类型:DateTime
默认值:None
支持通配符:False
不显示:False

参数集

Once
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
Daily
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
Weekly
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-AtLogOn

当指定的用户登录到计算机时启动计划作业。 若要指定用户,请使用 User 参数。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

AtLogon
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-AtStartup

在 Windows 启动时启动计划作业。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

AtStartup
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Daily

指定定期每日作业计划。 使用 Daily 参数集中的其他参数指定计划详细信息。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

Daily
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DaysInterval

指定每日计划发生之间的天数。 例如,值 3 在 1、4、7 等天启动计划作业。 默认值为 1。

参数属性

类型:Int32
默认值:1
支持通配符:False
不显示:False

参数集

Daily
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DaysOfWeek

指定每周计划作业运行的一周中的天数。 输入日名称,如“Monday”或整数 0-6,其中 0 表示星期日。 “每周”参数集中需要此参数。

日期名称将转换为作业触发器中的整数值。 在命令中用引号将日名称括起来时,将每天的名称括在单独的引号中,例如“Monday”、“Tuesday”。 如果将多天名称括在单引号对中,则将相应的整数值求和。 例如,“星期一,星期二”(1,2)结果值为“Wednesday”(3)。

参数属性

类型:

DayOfWeek[]

默认值:None
接受的值:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
支持通配符:False
不显示:False

参数集

Weekly
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Once

指定非定期(一次)或自定义重复计划。 若要创建重复计划,请使用 Once 参数与 RepetitionDurationRepetitionInterval 参数。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

Once
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-RandomDelay

启用在计划开始时间开始的随机延迟,并设置最大延迟值。 延迟的长度是针对每个开始的伪随机设置的,从不延迟到此参数的值指定的时间不等。 默认值零(00:00:00),将禁用随机延迟。

输入 timespan 对象(如 New-TimeSpan cmdlet 返回的对象),或输入 hours<:>minutes<:>seconds< 格式的值>,该值将自动转换为 TimeSpan 对象。

参数属性

类型:TimeSpan
默认值:00:00:00
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-RepeatIndefinitely

此参数从 Windows PowerShell 4.0 开始提供,无需为 RepetitionDuration 参数指定 TimeSpan.MaxValue 值,从而在无限期内重复运行计划作业。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

Once
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-RepetitionDuration

重复作业,直到指定的时间过期。 重复频率由 RepetitionInterval 参数的值确定。 例如,如果 RepetitionInterval 的值为 5 分钟,并且 RepetitionDuration 的值为 2 小时,则作业每 5 分钟触发一次两小时。

输入时间跨度对象,例如 New-TimeSpan cmdlet 返回的对象或可转换为时间跨度对象的字符串,例如“1:05:30”。

若要无限期运行作业,请改为添加 RepeatIndefinitely 参数。

若要在作业触发器重复持续时间过期之前停止作业,请使用 Set-JobTrigger cmdlet 将 RepetitionDuration 值设置为零(0)。

仅当命令中使用 Once时,AtRepetitionInterval 参数时,此参数才有效。

参数属性

类型:TimeSpan
默认值:0
支持通配符:False
不显示:False

参数集

Once
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-RepetitionInterval

按指定的时间间隔重复作业。 例如,如果此参数的值为 2 小时,则每隔两小时触发一次作业。 默认值 0 不重复作业。

输入时间跨度对象,例如 New-TimeSpan cmdlet 返回的对象或可转换为时间跨度对象的字符串,例如“1:05:30”。

此参数仅在命令中使用 OnceAtRepetitionDuration 参数时才有效。

参数属性

类型:TimeSpan
默认值:0
支持通配符:False
不显示:False

参数集

Once
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-User

指定触发 AtLogon 计划作业开始的用户。 以 <UserName> 或 <Domain\Username> 格式输入用户的名称,或输入星号 • 表示所有用户。 默认值为所有用户。

参数属性

类型:String
默认值:All users
支持通配符:False
不显示:False

参数集

AtLogon
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Weekly

指定定期每周作业计划。 使用 Weekly 参数集中的其他参数指定计划详细信息。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

Weekly
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WeeksInterval

指定每周作业计划发生之间的周数。 例如,值 3 会在第 1 周、4、7 等周启动计划作业。 默认值为 1。

参数属性

类型:Int32
默认值:1
支持通配符:False
不显示:False

参数集

Weekly
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

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" (或任何有效的 timespan 字符串); User="Domain1\User01 (或任何有效用户;仅用于 AtLogon 频率值) }