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>]

说明

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

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

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

New-JobTrigger 是 PSScheduledJob 模块中包含在Windows PowerShell中的作业计划 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

此命令创建可在每隔 3 天的上午 4:15 启动计划作业的作业触发器。

由于 At 参数值不包含某个日期,因此当前日期将用作 DateTime 对象中的日期值。 如果该日期和时间是过去的日期和时间,则计划作业将在下次开始时间之前启动,开始时间为从 At 参数值起第 3 天。

示例 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 个星期的星期一、星期三和星期五的 23:00(下午 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 个小时运行计划作业一次。 该计划从明日 (9/21/2012) 午夜(凌晨 0:00)开始运行。

参数

-At

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

使用 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:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-AtStartup

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

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

-Daily

指定一个循环的每日作业计划。 使用 每日 参数集中的其他参数指定计划详细信息。

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

-DaysInterval

指定启动每日计划之间间隔的天数。 例如,值为 3 时将在第 1 天、第 4 天、第 7 天(依此类推)启动计划作业。 默认值为 1。

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

-DaysOfWeek

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

在作业触发器中,应将星期几名称转换为其对应的整数值。 在某个命令中将星期几名称括在引号中时,应单独将每个星期几名称括在引号中,例如“Monday”、“Tuesday”。 如果将多个星期几名称括在一对引号中,则应合计相应的整数值。 例如,“Monday, Tuesday”(1, 2) 将生成一个“Wednesday”(3) 值。

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) 时将禁用随机延迟。

输入时间跨度对象,例如由 New-TimeSpan cmdlet 返回的一个,或者输入小时>:分钟>:<<秒>格式的值<,该格式会自动转换为 TimeSpan 对象。

Type:TimeSpan
Position:Named
Default value:00:00:00
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 小时,将在两小时内每 5 分钟触发一次该作业。

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

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

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

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

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

-RepetitionInterval

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

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

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

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

-User

指定可触发计划作业启动 AtLogon 的用户。 按 <UserName> 或 <Domain\Username> 格式输入用户名,或者输入一个星号 (*) 来表示所有用户。 默认值为所有用户。

Type:String
Position:Named
Default value:All users
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 周、第 4 周、第 7 周(依此类推)启动计划作业。 默认值为 1。

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

输入

None

不能通过管道将输入传递给此 cmdlet。

输出

Microsoft.PowerShell.ScheduledJob.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 频率值) }