Fix silent Windows service creation failures in install.ps1
- Add Administrator privilege check at script start - Replace silent `| Out-Null` with proper error handling for sc.exe - Exit with error if service creation fails - Add try/catch for Start-Service with proper error reporting Related to #735, #760, #751
This commit is contained in:
parent
d56f71e9eb
commit
9b5f291a98
1 changed files with 33 additions and 5 deletions
|
|
@ -20,6 +20,14 @@ $InstallDir = "C:\Program Files\Pulse"
|
||||||
$LogFile = "$env:ProgramData\Pulse\pulse-agent.log"
|
$LogFile = "$env:ProgramData\Pulse\pulse-agent.log"
|
||||||
$DownloadTimeoutSec = 300
|
$DownloadTimeoutSec = 300
|
||||||
|
|
||||||
|
# --- Administrator Check ---
|
||||||
|
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||||
|
if (-not $isAdmin) {
|
||||||
|
Write-Host "ERROR: This script must be run as Administrator" -ForegroundColor Red
|
||||||
|
Write-Host "Right-click PowerShell and select 'Run as Administrator'" -ForegroundColor Yellow
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# --- Cleanup Function ---
|
# --- Cleanup Function ---
|
||||||
$script:TempFiles = @()
|
$script:TempFiles = @()
|
||||||
function Cleanup {
|
function Cleanup {
|
||||||
|
|
@ -287,10 +295,23 @@ if ($Insecure) { $ServiceArgs += "--insecure" }
|
||||||
|
|
||||||
$BinPath = "`"$DestPath`" $($ServiceArgs -join ' ')"
|
$BinPath = "`"$DestPath`" $($ServiceArgs -join ' ')"
|
||||||
|
|
||||||
# Create Service
|
# Create Service with error handling
|
||||||
sc.exe create $AgentName binPath= $BinPath start= auto displayname= "Pulse Unified Agent" | Out-Null
|
$scOutput = sc.exe create $AgentName binPath= $BinPath start= auto displayname= "Pulse Unified Agent" 2>&1
|
||||||
sc.exe description $AgentName "Pulse Unified Agent for Host and Docker monitoring" | Out-Null
|
if ($LASTEXITCODE -ne 0) {
|
||||||
sc.exe failure $AgentName reset= 86400 actions= restart/5000/restart/5000/restart/5000 | Out-Null
|
Show-Error "Failed to create service '$AgentName'.`nsc.exe output: $scOutput"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
Write-Host "Service created successfully" -ForegroundColor Green
|
||||||
|
|
||||||
|
$scOutput = sc.exe description $AgentName "Pulse Unified Agent for Host and Docker monitoring" 2>&1
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Host "Warning: Failed to set service description: $scOutput" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
$scOutput = sc.exe failure $AgentName reset= 86400 actions= restart/5000/restart/5000/restart/5000 2>&1
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Host "Warning: Failed to configure service recovery: $scOutput" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
# Ensure log directory exists
|
# Ensure log directory exists
|
||||||
$LogDir = Split-Path $LogFile -Parent
|
$LogDir = Split-Path $LogFile -Parent
|
||||||
|
|
@ -298,7 +319,14 @@ if (-not (Test-Path $LogDir)) {
|
||||||
New-Item -ItemType Directory -Force -Path $LogDir | Out-Null
|
New-Item -ItemType Directory -Force -Path $LogDir | Out-Null
|
||||||
}
|
}
|
||||||
|
|
||||||
Start-Service $AgentName
|
# Start the service
|
||||||
|
try {
|
||||||
|
Start-Service $AgentName -ErrorAction Stop
|
||||||
|
Write-Host "Service started successfully" -ForegroundColor Green
|
||||||
|
} catch {
|
||||||
|
Show-Error "Failed to start service '$AgentName': $_"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "Installation complete." -ForegroundColor Green
|
Write-Host "Installation complete." -ForegroundColor Green
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue