有一个 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
}
Run Code Online (Sandbox Code Playgroud)
尝试在命令行上添加另一个触发器作为相同任务名称的一部分将不起作用,schtasks.exe这似乎与可以完成的 GUI 相矛盾。
这是用于创建事件触发器的函数,理想情况下,将其附加到相同的计划任务。
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 …Run Code Online (Sandbox Code Playgroud)