Files
IT_Tool/install-service.ps1

128 lines
4.7 KiB
PowerShell
Raw Permalink Normal View History

#Requires -RunAsAdministrator
<#
.SYNOPSIS
Installiert den NexusRMM Agent als Windows Service
.DESCRIPTION
Baut den Agent, kopiert ihn ins Zielverzeichnis und registriert ihn als Windows Service.
Muss als Administrator ausgefuehrt werden.
.PARAMETER ServerAddress
gRPC-Adresse des NexusRMM Servers (Standard: localhost:5001)
.PARAMETER InstallDir
Installationsverzeichnis (Standard: C:\Program Files\NexusRMM)
#>
param(
[string]$ServerAddress = "localhost:5001",
[string]$InstallDir = "C:\Program Files\NexusRMM"
)
$ErrorActionPreference = "Continue"
$Root = $PSScriptRoot
function Write-Step { param($msg) Write-Host "" ; Write-Host "==> $msg" -ForegroundColor Cyan }
function Write-OK { param($msg) Write-Host " [OK] $msg" -ForegroundColor Green }
function Write-Fail { param($msg) Write-Host " [FEHLER] $msg" -ForegroundColor Red }
# ---------------------------------------------------------------------------
# 1. Agent bauen
# ---------------------------------------------------------------------------
Write-Step "Baue NexusRMM Agent..."
Set-Location "$Root\Agent"
$env:GOOS = "windows"
$env:GOARCH = "amd64"
go build -ldflags "-s -w -X main.version=1.0.0" -o nexus-agent.exe ./cmd/agent
if ($LASTEXITCODE -ne 0) {
Write-Fail "go build fehlgeschlagen."
exit 1
}
Write-OK "nexus-agent.exe erstellt."
# ---------------------------------------------------------------------------
# 2. Installationsverzeichnis anlegen
# ---------------------------------------------------------------------------
Write-Step "Lege Installationsverzeichnis an: $InstallDir"
if (-not (Test-Path $InstallDir)) {
New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null
}
Write-OK "Verzeichnis bereit."
# ---------------------------------------------------------------------------
# 3. Dateien kopieren
# ---------------------------------------------------------------------------
Write-Step "Kopiere Dateien..."
Copy-Item "$Root\Agent\nexus-agent.exe" "$InstallDir\nexus-agent.exe" -Force
# Konfigurationsdatei anlegen falls nicht vorhanden
$configPath = "$InstallDir\nexus-agent.yaml"
if (-not (Test-Path $configPath)) {
@"
serverAddress: $ServerAddress
agentId: ""
heartbeatInterval: 30
meshEnabled: false
meshCentralUrl: ""
"@ | Out-File -FilePath $configPath -Encoding utf8
Write-OK "nexus-agent.yaml erstellt (serverAddress: $ServerAddress)."
} else {
Write-OK "nexus-agent.yaml bereits vorhanden, wird nicht ueberschrieben."
}
# ---------------------------------------------------------------------------
# 4. Bestehenden Service stoppen/deinstallieren falls vorhanden
# ---------------------------------------------------------------------------
$exePath = "$InstallDir\nexus-agent.exe"
$svcCheck = Get-Service -Name "NexusRMMAgent" -ErrorAction SilentlyContinue
if ($svcCheck) {
Write-Step "Entferne vorhandenen Service..."
& $exePath stop 2>$null
Start-Sleep -Seconds 2
& $exePath uninstall
if ($LASTEXITCODE -ne 0) {
Write-Fail "Service-Deinstallation fehlgeschlagen."
exit 1
}
Write-OK "Alter Service entfernt."
}
# ---------------------------------------------------------------------------
# 5. Service installieren und starten
# ---------------------------------------------------------------------------
Write-Step "Installiere Service..."
& $exePath install
if ($LASTEXITCODE -ne 0) {
Write-Fail "Service-Installation fehlgeschlagen."
exit 1
}
Write-OK "Service installiert."
Write-Step "Starte Service..."
& $exePath start
if ($LASTEXITCODE -ne 0) {
Write-Fail "Service konnte nicht gestartet werden."
exit 1
}
Write-OK "Service gestartet."
# ---------------------------------------------------------------------------
# Zusammenfassung
# ---------------------------------------------------------------------------
Write-Host ""
Write-Host "+--------------------------------------------------+" -ForegroundColor Green
Write-Host "| NexusRMM Agent als Service installiert! |" -ForegroundColor Green
Write-Host "+--------------------------------------------------+" -ForegroundColor Green
Write-Host "| Installiert in: $InstallDir" -ForegroundColor Green
Write-Host "| Server: $ServerAddress" -ForegroundColor Green
Write-Host "| Service-Name: NexusRMMAgent" -ForegroundColor Green
Write-Host "+--------------------------------------------------+" -ForegroundColor Green
Write-Host ""
Write-Host "Verwalten:" -ForegroundColor Yellow
Write-Host " Start: & '$exePath' start" -ForegroundColor Yellow
Write-Host " Stop: & '$exePath' stop" -ForegroundColor Yellow
Write-Host " Entfernen: & '$exePath' uninstall" -ForegroundColor Yellow
Write-Host " Oder via: services.msc -> NexusRMMAgent" -ForegroundColor Yellow
Write-Host ""