install_rd-heartbeat.ps1 aktualisiert

This commit is contained in:
manuel.maier committed 2026-10-17 15:38:49 +02:00
1 parent b0f8a53520
commit 8efe4c9b25
1 file changed
+11 -15
+11 -15
View File
@@ -2,17 +2,23 @@
# Installer: RD-Addressbook-Heartbeat # Installer: RD-Addressbook-Heartbeat
# ========================================== # ==========================================
# 1. Administrator-Rechte automatisch anfordern $ScriptUrl = "https://me-gitea.maieredv.cloud/manuel.maier/RD-Adressbook-Heartbeat/raw/branch/main/rd-heartbeat.ps1"
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { $InstallerUrl = "https://me-gitea.maieredv.cloud/manuel.maier/RD-Adressbook-Heartbeat/raw/branch/main/install_rd-heartbeat.ps1"
Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`""
# 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 Exit
} }
# 2. Variablen definieren # 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" $InstallDir = "$env:ProgramFiles\RD-Addressbook-Heartbeat"
$ScriptPath = "$InstallDir\rd-heartbeat.ps1" $ScriptPath = "$InstallDir\rd-heartbeat.ps1"
$TaskName = "RD-Addressbook Heartbeat" $TaskName = "RustDesk Heartbeat"
Write-Host "Starte Installation des RustDesk Heartbeats..." -ForegroundColor Cyan Write-Host "Starte Installation des RustDesk Heartbeats..." -ForegroundColor Cyan
@@ -38,23 +44,13 @@ try {
# 5. Geplanten Task einrichten # 5. Geplanten Task einrichten
Write-Host "Richte geplanten Task '$TaskName' ein..." -ForegroundColor Cyan 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`"" $Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"$ScriptPath`""
# Trigger 1: Direkt beim Systemstart (Boot)
$TriggerBoot = New-ScheduledTaskTrigger -AtStartup $TriggerBoot = New-ScheduledTaskTrigger -AtStartup
# Trigger 2: Wiederholung jede Minute (beginnend ab jetzt)
$TriggerRepeat = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) $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 $Principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
try { 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 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 Start-ScheduledTask -TaskName $TaskName
Write-Host "[OK] Task erfolgreich erstellt und gestartet!" -ForegroundColor Green Write-Host "[OK] Task erfolgreich erstellt und gestartet!" -ForegroundColor Green
} catch { } catch {