diff --git a/install_rd-heartbeat.ps1 b/install_rd-heartbeat.ps1 index e56663a..cbe21ac 100644 --- a/install_rd-heartbeat.ps1 +++ b/install_rd-heartbeat.ps1 @@ -2,17 +2,23 @@ # 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';`"" +$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 -$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 = "RD-Addressbook Heartbeat" +$TaskName = "RustDesk Heartbeat" Write-Host "Starte Installation des RustDesk Heartbeats..." -ForegroundColor Cyan @@ -38,23 +44,13 @@ try { # 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 {