25 lines
1.7 KiB
PowerShell
25 lines
1.7 KiB
PowerShell
[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)
|