#Requires -Version 5.1 #Requires -RunAsAdministrator $script:ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $script:ScriptDir . "$script:ScriptDir\lib\common.ps1" $ErrorActionPreference = "Stop" $TaskName = "Gitea" try { Test-Dependencies if (-not (Test-Path ".env")) { throw "Файл .env не найден. Сначала выполните .\deploy.ps1 install" } $startScript = Join-Path $script:ScriptDir "start.ps1" $stopScript = Join-Path $script:ScriptDir "stop.ps1" $existing = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue if ($existing) { Write-Warn "Задача '$TaskName' уже существует. Перерегистрация..." Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false } Write-Info "Регистрация задачи автозапуска: $TaskName" $startAction = New-ScheduledTaskAction ` -Execute "powershell.exe" ` -Argument "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File `"$startScript`"" $stopAction = New-ScheduledTaskAction ` -Execute "powershell.exe" ` -Argument "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File `"$stopScript`"" $startupTrigger = New-ScheduledTaskTrigger -AtStartup $startupTrigger.Delay = "PT1M" $principal = New-ScheduledTaskPrincipal ` -UserId "SYSTEM" ` -LogonType ServiceAccount ` -RunLevel Highest $settings = New-ScheduledTaskSettingsSet ` -AllowStartIfOnBatteries ` -DontStopIfGoingOnBatteries ` -StartWhenAvailable ` -ExecutionTimeLimit ([TimeSpan]::Zero) Register-ScheduledTask ` -TaskName $TaskName ` -Action $startAction ` -Trigger $startupTrigger ` -Principal $principal ` -Settings $settings ` -Description "Автозапуск Gitea (Docker Compose)" | Out-Null Write-Info "Запуск Gitea..." & $startScript Write-Info "Задача '$TaskName' установлена. Gitea будет запускаться при загрузке Windows." Write-Info "Управление:" Write-Info " Start-ScheduledTask -TaskName $TaskName" Write-Info " Stop-ScheduledTask -TaskName $TaskName" Write-Info " Get-ScheduledTask -TaskName $TaskName" } catch { Write-Err $_.Exception.Message exit 1 }