【发布时间】:2019-01-31 09:32:36
【问题描述】:
我需要使用 powershell 创建两个计划任务,每个任务将运行一个 powershell 脚本。
一个应该在每天 08:00 触发,每两小时运行一次。所以在 10:00 ,12:00, 14:00 等.. 另一个每天 9 点,每两个小时运行一次。所以在 11:00 ,13:00, 15:00 等..
如果用户未登录,任务仍应在他登录后立即触发。 假设他在 9:35 登录,这将触发这两个任务。它们怎么能不同时运行?
我尝试向其中一个添加延迟,但延迟有可能为 0
解决方案可以是:
- 当它们同时运行时,它们会检查是否是这种情况以及其中一个出口。或者,
- 其他一些确保它们不拦截的方法
$taskAction1 = New-ScheduledTaskAction -Execute 'Powershell.exe' -argument "-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File $script1"
$taskAction2 = New-ScheduledTaskAction -Execute 'Powershell.exe' -argument "-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File $script2"
$taskSettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -Hidden -DontStopIfGoingOnBatteries
$taskTrigger = New-ScheduledTaskTrigger -AtLogOn
$taskTriggerWithDelay = New-ScheduledTaskTrigger -AtLogOn -RandomDelay 00:15:00
Register-ScheduledTask -User System -Action $taskAction1 -Trigger $TasKTrigger -TaskName "Task1" -RunLevel Highest -Settings $TaskSettings -f | Out-Null
Register-ScheduledTask -User System -Action $taskAction2 -Trigger $taskTriggerWithDelay -TaskName "Task2" -RunLevel Highest -Settings $TaskSettings -f | Out-Null
$trigger= Get-ScheduledTask -TaskName Task1
$trigger.Triggers.repetition.Interval = "PT2H"
$trigger.Triggers.repetition.duration = ""
$trigger | Set-ScheduledTask | Out-Null
$trigger= Get-ScheduledTask -TaskName Task2
$trigger.Triggers.repetition.Interval = "PT2H"
$trigger.Triggers.repetition.duration = ""
$trigger | Set-ScheduledTask | Out-Null
【问题讨论】:
-
听起来像是功课。 ;-) 到目前为止你尝试了什么?请显示您的代码。你可以看看the tour 或者How do I ask a good question?。
-
我添加了我的代码。好吧,这不是家庭作业,而是更大项目的一部分。
标签: powershell scheduled-tasks