commit ef41090fb9c1319ceb74c975b28d4bb8d9802f84 Author: manuel.maier Date: Sat Oct 17 15:32:03 2026 +0200 Dateien nach "/" hochladen diff --git a/install_rd-heartbeat.ps1 b/install_rd-heartbeat.ps1 new file mode 100644 index 0000000..d13011b --- /dev/null +++ b/install_rd-heartbeat.ps1 @@ -0,0 +1,11 @@ +# 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 diff --git a/rd-heartbeat.ps1 b/rd-heartbeat.ps1 new file mode 100644 index 0000000..52185ab --- /dev/null +++ b/rd-heartbeat.ps1 @@ -0,0 +1,52 @@ +# ========================================== +# RustDesk Heartbeat Script (via EXE) +# ========================================== + +$DashboardUrl = "http://10.10.20.225:8082" +$RustDeskId = $null + +$ExePaths = @( + "$env:ProgramFiles\RustDesk\rustdesk.exe", + "${env:ProgramFiles(x86)}\RustDesk\rustdesk.exe", + "C:\RustDesk\rustdesk.exe", + "C:\Program Files\RustDeskSupportModul\RustDeskSupportModul.exe" +) + +$FoundExe = $null + +# 1. rustdesk.exe suchen +foreach ($Path in $ExePaths) { + if (Test-Path $Path) { + $FoundExe = $Path + break + } +} + +# 2. ID sicher abfragen +if ($FoundExe) { + Write-Host "RustDesk gefunden in: $FoundExe" -ForegroundColor Cyan + + # Arbeitsverzeichnis in den RustDesk-Ordner wechseln + $WorkDir = Split-Path $FoundExe + Set-Location -Path $WorkDir + + # ID abfragen und mit Out-String in Text zwingen (verhindert den NULL Fehler) + $rawId = & $FoundExe --get-id | Out-String + + if (-not [string]::IsNullOrWhiteSpace($rawId)) { + $RustDeskId = $rawId.Trim() + } +} + +# 3. Heartbeat senden +if ($RustDeskId) { + $HeartbeatUrl = "$DashboardUrl/api/heartbeat/$RustDeskId" + try { + Invoke-RestMethod -Uri $HeartbeatUrl -Method Get -UseBasicParsing -ErrorAction Stop + Write-Host "[OK] Heartbeat erfolgreich gesendet fuer ID: $RustDeskId" -ForegroundColor Green + } catch { + Write-Host "[FEHLER] Fehler beim Senden des Heartbeats an $HeartbeatUrl : $_" -ForegroundColor Red + } +} else { + Write-Host "[FEHLER] Konnte rustdesk.exe zwar finden, aber die ID wurde leer zurueckgegeben." -ForegroundColor Red +} \ No newline at end of file