
我试图通过PowerShell脚本实现以下设置(选择“如果任务已经运行,那么下面的规则就适用”),但无法获得适当的设置来配置该设置。
我正在使用下面的代码来配置这个
$Trigger = New-ScheduledTaskTrigger -At 07:00am -Daily
$Settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Hour 1) -Compatibility Win7 -StartWhenAvailable -Priority 7
$User = "SYSTEM"
$Action = New-ScheduledTaskAction -Execute "some script" -Argument "some argument" -WorkingDirectory "working dir"
Register-ScheduledTask -TaskName "Test Task" -Trigger $Trigger -User $User -Action $Action -Settings $Settings -RunLevel Highest –Force为触发器执行高级配置
$Task = Get-ScheduledTask -TaskName "Example Task"
$Task.Triggers[0].ExecutionTimeLimit = "PT10M"
$Task | Set-ScheduledTask -User $User发布于 2019-11-13 14:44:36
该设置是通过New-ScheduledTaskSettingsSet配置的,您要查找的参数是-MultipleInstances
-MultipleInstances
指定定义任务计划程序如何处理多个任务实例的策略。此参数的可接受值为:
IgnoreNew。新任务实例将被忽略。并行。新任务实例立即启动。排队。新任务实例在当前实例完成后立即启动。
类型:MultipleInstancesEnum
接受值:Parallel、Queue、IgnoreNew
职位:命名
默认值:None
但是,文档只列出了3个值,相应的枚举(至少在撰写本文时也只有列出的3个值):
Parallel→在parallelQueue→队列中运行一个新实例新的instanceIgnoreNew→不启动新实例如果通过GUI手动创建任务,并选择“停止现有实例”设置,则值.Settings.MultipleInstances为空,但如果通过New-ScheduledTaskSettingsSet创建设置对象,忽略参数-MultipleInstances,则默认为IgnoreNew。试图将其更改为空值将导致验证错误。
这显然是一个错误(引用枚举中缺少值)。
发布于 2022-05-26 22:42:11
枚举现在包含'StopExisting'.。
这是我在C#中的解决方案。
static void RegisterMyTask(string taskPath, string remoteServer)
{
try
{
using TaskService ts = new(remoteServer);
TaskDefinition taskDef = ts.NewTask();
taskDef.Settings.MultipleInstances = TaskInstancesPolicy.StopExisting;
...然而,PowerShell可能也有新的枚举。正如我所猜测的:
-MultipleInstances StopExisting我在多台远程服务器上安排了一项任务。
第一天它就开始运行了。
第二天,它未能启动一个新实例,但没有杀死现有的实例。
第三天,它没有启动一个新的实例,但是没有杀死现有的实例。30秒后,现有实例被“第一天超时”设置杀死,但新实例已在一天内失败。
这解决了我的问题。
https://stackoverflow.com/questions/58838779
复制相似问题