Как удалить все триггеры задач для каждой задачи? - PullRequest
0 голосов
/ 18 июня 2020

Как мне удалить все триггеры задач для каждой задачи вместе. Приведенный ниже сценарий удаляет триггер задачи только по одному для одной задачи. Сценарий написан Тони Хинклем.

$taskName = "MyTask"
$triggerToDelete = 1 (THIS PART, how do I write ALL)

# connect to Task Scheduler:
$service = New-Object -ComObject Schedule.Service
$service.Connect($env:COMPUTERNAME)

# pick a specific task in a container:
$folder = $service.GetFolder('\')
$task = $folder.GetTask($taskName)

# get task definition and change it:
$definition = $task.Definition
$definition.Triggers.Remove($triggerToDelete)

# write back changed task definition:
# 4 = Update
$folder.RegisterTaskDefinition($task.Name, $definition, 4, $null, $null, $null)

1 Ответ

0 голосов
/ 18 июня 2020

Вам нужно перебрать все триггеры в обратном порядке и удалить их по одному. Обратите внимание, что индекс триггера отсчитывается от единицы, а не от нуля. Обновление: добавлен код, который перечисляет все задачи.

$service = New-Object -ComObject Schedule.Service
$service.Connect($env:COMPUTERNAME)

$folder = $service.GetFolder('\')

$tasks = $folder.gettasks(0)

foreach ($t in $tasks)
{
    $definition = $t.Definition

    $triggersCount = $definition.Triggers.Count

    for($id=$triggersCount; $id -gt 0; $id--){
      $definition.Triggers.Remove($id)   
    }

    $folder.RegisterTaskDefinition($t.Name, $definition, 4, $null, $null, $null)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...