Powershell v3附带了所有这些新的作业调度cmdlet。它们看起来很棒,但我在创建特定的触发器时遇到了麻烦。我需要每天运行一个作业,在特定的时间间隔内每小时重复一次。
使用Task-Scheduler UI很简单,但我找不到使用New-JobTrigger cmdlet的方法。
如果我使用Daily参数集,我没有重复选项:
New-JobTrigger [-Daily] -At <DateTime> [-DaysInterval <Int32> ] [-RandomDelay <TimeSpan> ] [ <CommonParameters>]如果我使用一次参数集,我就不能使用Daily选项
New-JobTrigger [-Once] -At <DateTime> [-RandomDelay <TimeSpan> ] [-RepetitionDuration <TimeSpan> ] [-RepetitionInterval <TimeSpan> ] [ <CommonParameters>]我需要的,但显然不起作用的,是两者的混合。例如:
New-JobTrigger -Daily -At xxxx -RepetitionDuration (New-TimeSpan -Hours 5) -RepetitionInterval (New-TimeSpan -Hours 1)有可能吗?也许在同一个作业中混合了几个触发器?
发布于 2012-11-30 04:59:38
这对我来说很有效:
注意-我知道最初的问题与New-JobTrigger有关,其目的是提供一个可能的解决方案,该解决方案也可以翻译为New-JobTrigger,因为该问题适用于这两个问题。
$A = New-ScheduledTaskAction -execute "powershell" -argument "-nologo -noprofile -noninteractive C:\MyScript.ps1"
$T = New-ScheduledTaskTrigger -Once -At 03:00AM
Register-ScheduledTask -TaskName StartBasicServices_Local -Trigger $T -Action $A -description "MyScript" -User "NT AUTHORITY\SYSTEM" -RunLevel 1
$T.RepetitionInterval = (New-TimeSpan -Minutes 5)
$T.RepetitionDuration = (New-TimeSpan -Days 1)
Set-ScheduledTask StartBasicServices_Local -Trigger $T发布于 2012-10-08 20:31:20
我已经在这个问题上工作了一整天,我终于有了答案。你不能。不管怎么说都不用那些cmdlet。起初,我认为这可能是一种变通方法:
$Job = Register-ScheduledJob -Name "YourJobName" {Gci};
$RepeatTrigger = New-JobTrigger -Once -At (Get-Date 10:00).ToShortTimeString() - RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration (New-TimeSpan -Hours 7);
$RepeatTrigger.Frequency = [Microsoft.PowerShell.ScheduledJob.TriggerFrequency]::Daily;
Add-JobTrigger -InputObject $Job -Trigger $RepeatTrigger然而,事实并非如此。使用trace-command,它看起来像是根据参数集验证属性。使用schtask时也是如此:
schtasks /create /tn YourTask /tr notepad.exe /sc Hourly 它将每小时创建一次,但这将再次成为一次性任务。从外观上看,COM有一个.Net包装器,如果您是PoSH新手,它可能是您最好的选择。你可以在CodePlex上找到它。
发布于 2014-08-06 23:40:35
我知道Add-JobTrigger,但我不知道如何实现我的特定需求:每天运行一个作业,每小时重复一次,持续一段时间。例如:每天上午10点,每隔1小时重复一次,直到下午5点- scarmuega Oct 7 '12在18:14
使用Register-ScheduledJob创建作业。然后添加每日触发器。如果我们能做到这一点就太好了,但是在PowerShell 4.0中-Daily不能工作。继续读下去,我有一个替代方案给你。
# Technet: http://technet.microsoft.com/en-us/library/hh849759.aspx
# To create a repeating schedule, use the Once parameter with the RepetitionDuration and RepetitionInterval parameters.
# -RepetitionInterval Repeats the job at the specified time interval. For example, if the value of this parameter is 2 hours, the job is triggered every two hours.
# The default value, 0, does not repeat the job.
# -RepetitionDuration Repeats the job until the specified time expires. The repetition frequency is determined by the value of the RepetitionInterval parameter.
# For example, if the value of RepetitionInterval is 5 minutes and the value of RepetitionDuration is 2 hours, the job is triggered every five minutes for two hours.
#
$trigger = New-JobTrigger -Daily -At 10:00 -RepetitionDuration 7:00:00 -RepetitionInterval 1:00:00 -DaysofWeek
Register-ScheduledJob -Name Test -Trigger $trigger -ScriptBlock {}你可以组织你的工作,让它在你想要的每一个小时都有一个触发器。
$trigger4am = New-JobTrigger -Daily -At 04:10
Register-ScheduledJob -Name ArchiveProd -Trigger $trigger4am -ScriptBlock {E:\ArchiveProd.ps1}
$trigger8am = New-JobTrigger -Daily -At 08:10
$trigger12pm = New-JobTrigger -Daily -At 12:10
$trigger6pm = New-JobTrigger -Daily -At 18:10
Add-JobTrigger -Trigger $trigger8am -Name ArchiveProd
Add-JobTrigger -Trigger $trigger12pm -Name ArchiveProd
Add-JobTrigger -Trigger $trigger6pm -Name ArchiveProd希望这就是你需要的。它对我的情况很好,尽管我更喜欢只添加Daily参数。也许没人能帮我改进一下?
https://stackoverflow.com/questions/12768769
复制相似问题