From 97bb046a9a0342f10bd0ceb4e70b942b1a84b0d5 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Sat, 17 Oct 2026 15:34:57 +0200 Subject: [PATCH] install_rd-heartbeat.ps1 aktualisiert --- install_rd-heartbeat.ps1 | 76 ++++++++++++++++++++++++++++++++++------ 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/install_rd-heartbeat.ps1 b/install_rd-heartbeat.ps1 index d13011b..9ad3f6a 100644 --- a/install_rd-heartbeat.ps1 +++ b/install_rd-heartbeat.ps1 @@ -1,11 +1,65 @@ -# Aktion: Startet PowerShell versteckt und führt das Skript aus -$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"C:\scripts\rd-heartbeat.ps1`"" - -# Trigger: Einmalig jetzt starten und dann unendlich alle 1 Minute wiederholen -$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) - -# Principal: Als SYSTEM-Konto mit höchsten Rechten ausführen (verhindert Popups) -$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest - -# Task registrieren -Register-ScheduledTask -TaskName "RustDesk Heartbeat" -Action $action -Trigger $trigger -Principal $principal -Description "Sendet minuetlich den RustDesk-Status an das Adressbuch-Dashboard" \ No newline at end of file +# ========================================== +# Installer: RD-Addressbook-Heartbeat +# ========================================== + +# 1. Administrator-Rechte automatisch anfordern +if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { + Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"" + Exit +} + +# 2. Variablen definieren +$ScriptUrl = "https://me-gitea.maieredv.cloud/manuel.maier/RD-Adressbook-Heartbeat/raw/branch/main/rd-heartbeat.ps1" +$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 + +# Aktion: Skript komplett versteckt im Hintergrund ausführen +$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"$ScriptPath`"" + +# Trigger 1: Direkt beim Systemstart (Boot) +$TriggerBoot = New-ScheduledTaskTrigger -AtStartup + +# Trigger 2: Wiederholung jede Minute (beginnend ab jetzt) +$TriggerRepeat = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) + +# Principal: Als SYSTEM ausführen (höchste Rechte, unsichtbar für den lokalen Benutzer) +$Principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest + +try { + # Task registrieren (überschreibt automatisch einen evtl. alten Task mit demselben Namen) + Register-ScheduledTask -TaskName $TaskName -Action $Action -Trigger @($TriggerBoot, $TriggerRepeat) -Principal $Principal -Description "Sendet minuetlich den RustDesk-Status an das Adressbuch-Dashboard" -Force | Out-Null + + # Task direkt nach der Installation einmalig anstarten + 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 \ No newline at end of file