Switch backend startup to interactive session
This commit is contained in:
@@ -1,36 +1,45 @@
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
param(
|
||||
[switch]$AllUsers,
|
||||
[string]$ServiceName = "ScreenJobBackend"
|
||||
)
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Test-IsAdministrator {
|
||||
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$principal = New-Object Security.Principal.WindowsPrincipal($identity)
|
||||
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
$scriptDir = Split-Path -Parent $PSCommandPath
|
||||
$shortcutName = "ScreenJob Backend.lnk"
|
||||
$startupFolder = if ($AllUsers) {
|
||||
[Environment]::GetFolderPath("CommonStartup")
|
||||
} else {
|
||||
[Environment]::GetFolderPath("Startup")
|
||||
}
|
||||
|
||||
if (-not (Test-IsAdministrator)) {
|
||||
throw "Run this script from an elevated PowerShell session (Run as Administrator)."
|
||||
}
|
||||
$shortcutPath = Join-Path $startupFolder $shortcutName
|
||||
|
||||
$service = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue
|
||||
if ($null -eq $service) {
|
||||
Write-Host "Service '$ServiceName' is not installed."
|
||||
exit 0
|
||||
}
|
||||
if ($null -ne $service) {
|
||||
if ($PSCmdlet.ShouldProcess($ServiceName, "Remove legacy Windows service")) {
|
||||
if ($service.Status -ne "Stopped") {
|
||||
Stop-Service -Name $ServiceName -Force -ErrorAction Stop
|
||||
}
|
||||
|
||||
if ($PSCmdlet.ShouldProcess($ServiceName, "Uninstall service")) {
|
||||
if ($service.Status -ne "Stopped") {
|
||||
Stop-Service -Name $ServiceName -Force -ErrorAction Stop
|
||||
}
|
||||
& sc.exe delete $ServiceName | Out-Null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to delete service '$ServiceName' (sc.exe exit code $LASTEXITCODE)."
|
||||
}
|
||||
|
||||
& sc.exe delete $ServiceName | Out-Null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to delete service '$ServiceName' (sc.exe exit code $LASTEXITCODE)."
|
||||
Write-Host "Removed legacy Windows service: $ServiceName"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Service '$ServiceName' uninstalled successfully." -ForegroundColor Green
|
||||
if (Test-Path -LiteralPath $shortcutPath) {
|
||||
if ($PSCmdlet.ShouldProcess($shortcutPath, "Remove backend startup shortcut")) {
|
||||
Remove-Item -LiteralPath $shortcutPath -Force
|
||||
Write-Host "Removed backend startup shortcut: $shortcutPath"
|
||||
}
|
||||
} else {
|
||||
Write-Host "No backend startup shortcut found at: $shortcutPath"
|
||||
}
|
||||
|
||||
Write-Host "Backend launcher uninstalled successfully." -ForegroundColor Green
|
||||
|
||||
Reference in New Issue
Block a user