Имейте сценарий PowerShell, который создаст запланированную задачу для развертывания с помощью Octopus на сервере Windows 2012.
Function Create-ScheduledTask($TaskName,$RunAsUser,$TaskRun,$Schedule,$StartTime,$StartDate,$Arguments,$RunWithElevatedPermissions,$Days,$Password){
# set up
$Command = "schtasks.exe /create /ru `"$RunAsUser`" /tn `"$TaskName`" /tr `"'$($TaskRun)' $Arguments`" $cmdSchedule $cmdDays $cmdStartDate $cmdStartTime /F $cmdInterval $cmdDuration $cmdRunLevel $cmdPassword"
echo $Command
Invoke-Expression $Command
}
Попытка добавить еще один триггер как часть того же имени задачи в командной строке не будет работать с schtasks.exe
, что, по-видимому, противоречит графическому интерфейсу пользователя, в котором это можно сделать.
Это функция, которая использовалась для создания триггера события, в идеале, чтобы присоединить его к той же запланированной задаче.
Function Create-ScheduledTaskEvent($TaskName,$RunAsUser,$TaskRun,$Arguments,$RunWithElevatedPermissions,$Password, $xPath, $channelName){
$cmdRunLevel = if(-Not $RunWithElevatedPermissions){""}else{"/rl HIGHEST"}
$cmdPassword = if([string]::IsNullOrEmpty($Password)){""}else{"/rp `"$Password`""}
$cmdXPath = if([string]::IsNullOrEmpty($xPath)){""}else{"/sc ONEVENT /MO `"$xPath`" "}
$cmdRunLevel = if(-Not $RunWithElevatedPermissions){""}else{"/rl HIGHEST"}
$Command = "schtasks.exe /create $cmdRunLevel /ru `"$RunAsUser`" $cmdXPath /tn `"$TaskName`" /tr `"'$($TaskRun)' $Arguments`" /ec `"$channelName`" "
echo $Command
Invoke-Expression $Command
}
Проблема в том, что замена переключателя /create
на /change
приводит только к сбою триггера / действия предыдущей запланированной задачи.
Есть идеи, как это можно сделать с помощью schtasks.exe
в командной строке, чтобы объединить триггеры в один.
Это можно сделать, создав отдельное расписание задач с другим именем задачи, хотя это не идеально, равно как и экспорт задачи как xml, а затем импорт обратно.