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 模块中作业计划 cmdlet 的集合之一,包含在 Windows PowerShell 中。
有关计划作业的详细信息,请参阅 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:为新的计划作业Create作业触发器
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:Create重复作业触发器
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:Create每小时作业触发器
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
指定一个循环的每日作业计划。 使用 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 参数以及 RepetitionDuration 和 RepetitionInterval 参数。
Type: | SwitchParameter |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RandomDelay
启用从计划开始时间开始的随机延迟,并设置最大延迟值。 针对每次启动以伪随机地方式设置延迟的长度,该长度可从无延迟变化到由此参数值指定的时间。 默认值为零 (00:00:00) 时将禁用随机延迟。
输入时间跨度对象(例如 New-TimeSpan cmdlet 返回的一个),或以 hours>:minutes>:<<seconds> 格式输入值<,该值会自动转换为 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) 。
仅当命令中使用了 Once、At 和 RepetitionInterval 参数时,此参数才有效。
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”)。
仅当命令中使用了 Once、At 和 RepetitionDuration 参数时,此参数才有效。
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。
输出
备注
作业触发器不会保存到磁盘。 但是,计划的作业将保存到磁盘,你可以使用 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 频率值) }
相关链接
- about_Scheduled_Jobs
- 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