install_rd-heartbeat.ps1 aktualisiert
This commit is contained in:
1 parent
ef41090fb9
commit
97bb046a9a
1 file changed
+65
-11
+65
-11
@@ -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`""
|
# Installer: RD-Addressbook-Heartbeat
|
||||||
|
# ==========================================
|
||||||
# Trigger: Einmalig jetzt starten und dann unendlich alle 1 Minute wiederholen
|
|
||||||
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1)
|
# 1. Administrator-Rechte automatisch anfordern
|
||||||
|
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
||||||
# Principal: Als SYSTEM-Konto mit höchsten Rechten ausführen (verhindert Popups)
|
Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`""
|
||||||
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
|
Exit
|
||||||
|
}
|
||||||
# Task registrieren
|
|
||||||
Register-ScheduledTask -TaskName "RustDesk Heartbeat" -Action $action -Trigger $trigger -Principal $principal -Description "Sendet minuetlich den RustDesk-Status an das Adressbuch-Dashboard"
|
# 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
|
||||||
Reference in new issue
Block a user