# ========================================== # 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 }