Files
xtrhrj/scripts/Register-XtrhStartup.ps1
T

25 lines
1.7 KiB
PowerShell
Raw Normal View History

2026-10-20 08:34:12 +08:00
[CmdletBinding()]
param([string]$InstallRoot = (Split-Path -Parent $PSScriptRoot), [string]$JavaHome, [switch]$Remove)
. (Join-Path $PSScriptRoot 'Common.ps1')
$root = [System.IO.Path]::GetFullPath($InstallRoot)
$sha = [System.Security.Cryptography.SHA256]::Create()
try { $hash = [BitConverter]::ToString($sha.ComputeHash([Text.Encoding]::UTF8.GetBytes($root.ToLowerInvariant()))).Replace('-', '').Substring(0, 12) }
finally { $sha.Dispose() }
$taskName = 'PXHJ-XTRH-' + $hash
if ($Remove) {
if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) { Unregister-ScheduledTask -TaskName $taskName -Confirm:$false }
Write-Output ('已移除此部署实例的自动启动:' + $taskName)
return
}
$java = Get-XtrhJava -JavaHome $JavaHome
$resolvedJavaHome = Split-Path -Parent (Split-Path -Parent $java)
$startScript = Join-Path $root 'scripts/Start-Xtrh.ps1'
$arguments = '-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File "' + $startScript + '" -InstallRoot "' + $root + '" -JavaHome "' + $resolvedJavaHome + '"'
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument $arguments -WorkingDirectory $root
$user = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $user
$principal = New-ScheduledTaskPrincipal -UserId $user -LogonType Interactive -RunLevel Limited
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -MultipleInstances IgnoreNew -ExecutionTimeLimit ([TimeSpan]::Zero)
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force | Out-Null
Write-Output ('已配置当前用户登录后后台自动启动:' + $taskName)