# ========================================== # Installer: RD-Addressbook-Heartbeat # ========================================== $ScriptUrl = "https://me-gitea.maieredv.cloud/manuel.maier/RD-Adressbook-Heartbeat/raw/branch/main/rd-heartbeat.ps1" $InstallerUrl = "https://me-gitea.maieredv.cloud/manuel.maier/RD-Adressbook-Heartbeat/raw/branch/main/install_rd-heartbeat.ps1" # 1. Administrator-Rechte automatisch anfordern (optimiert fuer den One-Liner) $isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) if (-Not $isAdmin) { Write-Host "Fordere Administratorrechte an. Bitte UAC-Meldung bestaetigen..." -ForegroundColor Yellow # Startet eine neue Admin-PowerShell und fuehrt den One-Liner dort sauber aus Start-Process powershell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"irm '$InstallerUrl' | iex; Write-Host ''; Read-Host 'Druecke Enter zum Schliessen...'`"" Exit } # 2. Variablen definieren $InstallDir = "$env:ProgramFiles\RD-Addressbook-Heartbeat" $ScriptPath = "$InstallDir\rd-heartbeat.ps1" $TaskName = "RustDesk Heartbeat" Write-Host "Starte Installation des RustDesk Heartbeats..." -ForegroundColor Cyan # 3. Installations-Ordner erstellen if (-Not (Test-Path $InstallDir)) { New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null Write-Host "[OK] Verzeichnis erstellt: $InstallDir" -ForegroundColor Green } else { Write-Host "[INFO] Verzeichnis existiert bereits: $InstallDir" -ForegroundColor Yellow } # 4. Heartbeat-Skript von Gitea herunterladen Write-Host "Lade Heartbeat-Skript herunter..." -ForegroundColor Cyan try { Invoke-WebRequest -Uri $ScriptUrl -OutFile $ScriptPath -UseBasicParsing -ErrorAction Stop Write-Host "[OK] Skript erfolgreich gespeichert unter: $ScriptPath" -ForegroundColor Green } catch { Write-Host "[FEHLER] Download fehlgeschlagen: $_" -ForegroundColor Red Read-Host "Druecke Enter zum Beenden..." Exit } # 5. Geplanten Task einrichten Write-Host "Richte geplanten Task '$TaskName' ein..." -ForegroundColor Cyan $Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"$ScriptPath`"" $TriggerBoot = New-ScheduledTaskTrigger -AtStartup $TriggerRepeat = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) $Principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest try { Register-ScheduledTask -TaskName $TaskName -Action $Action -Trigger @($TriggerBoot, $TriggerRepeat) -Principal $Principal -Description "Sendet minuetlich den RustDesk-Status an das Adressbuch-Dashboard" -Force | Out-Null Start-ScheduledTask -TaskName $TaskName Write-Host "[OK] Task erfolgreich erstellt und gestartet!" -ForegroundColor Green } catch { Write-Host "[FEHLER] Beim Erstellen des Tasks ist ein Fehler aufgetreten: $_" -ForegroundColor Red } Write-Host "`nInstallation abgeschlossen. Dieses Fenster schliesst sich in 5 Sekunden..." -ForegroundColor Cyan Start-Sleep -Seconds 5