首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PowerShell脚本在中配置“如果任务已经运行,那么以下规则适用”?

如何使用PowerShell脚本在中配置“如果任务已经运行,那么以下规则适用”?
EN

Stack Overflow用户
提问于 2019-11-13 13:59:05
回答 2查看 4.5K关注 0票数 1

我试图通过PowerShell脚本实现以下设置(选择“如果任务已经运行,那么下面的规则就适用”),但无法获得适当的设置来配置该设置。

我正在使用下面的代码来配置这个

代码语言:javascript
复制
$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

为触发器执行高级配置

代码语言:javascript
复制
$Task = Get-ScheduledTask -TaskName "Example Task"

$Task.Triggers[0].ExecutionTimeLimit = "PT10M"

$Task | Set-ScheduledTask -User $User
EN

回答 2

Stack Overflow用户

发布于 2019-11-13 14:44:36

该设置是通过New-ScheduledTaskSettingsSet配置的,您要查找的参数是-MultipleInstances

-MultipleInstances

指定定义任务计划程序如何处理多个任务实例的策略。此参数的可接受值为:

IgnoreNew。新任务实例将被忽略。并行。新任务实例立即启动。排队。新任务实例在当前实例完成后立即启动。

类型:MultipleInstancesEnum

接受值:ParallelQueueIgnoreNew

职位:命名

默认值:None

但是,文档只列出了3个值,相应的枚举(至少在撰写本文时也只有列出的3个值):

  • Parallel→在parallel
  • Queue→队列中运行一个新实例新的instance
  • IgnoreNew→不启动新实例

如果通过GUI手动创建任务,并选择“停止现有实例”设置,则值.Settings.MultipleInstances为空,但如果通过New-ScheduledTaskSettingsSet创建设置对象,忽略参数-MultipleInstances,则默认为IgnoreNew。试图将其更改为空值将导致验证错误。

这显然是一个错误(引用枚举中缺少值)。

票数 2
EN

Stack Overflow用户

发布于 2022-05-26 22:42:11

枚举现在包含'StopExisting'.。

这是我在C#中的解决方案。

代码语言:javascript
复制
static void RegisterMyTask(string taskPath, string remoteServer)
{
    try
    {
        using TaskService ts = new(remoteServer);
        TaskDefinition taskDef = ts.NewTask();
        taskDef.Settings.MultipleInstances = TaskInstancesPolicy.StopExisting;

        ...

然而,PowerShell可能也有新的枚举。正如我所猜测的:

代码语言:javascript
复制
-MultipleInstances StopExisting

我在多台远程服务器上安排了一项任务。

第一天它就开始运行了。

第二天,它未能启动一个新实例,但没有杀死现有的实例。

第三天,它没有启动一个新的实例,但是没有杀死现有的实例。30秒后,现有实例被“第一天超时”设置杀死,但新实例已在一天内失败。

这解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58838779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档