<# Holt den Deploymentcenter Update-Agent und legt ihn ausfuehrbar ab. irm https://dc.mhdf.de/installer/install.ps1 | iex Das Skript fuehrt die Installation NICHT selbst aus. Es laedt das Binary, prueft die Pruefsumme und sagt, wie es weitergeht - was danach passiert, entscheidet der Mensch davor. Ein Skript aus dem Netz, das ungefragt eine Anwendung einrichtet und dabei nach Zugangsdaten fragt, waere genau das Muster, vor dem man Nutzer sonst warnt. #> $ErrorActionPreference = 'Stop' $baseUrl = if ($env:DC_BASE_URL) { $env:DC_BASE_URL.TrimEnd('/') } else { 'https://dc.mhdf.de' } $targetDir = if ($env:DC_INSTALL_DIR) { $env:DC_INSTALL_DIR } else { $PWD.Path } # ------------------------------------------------------------------ Plattform $arch = [System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture switch ($arch) { 'X64' { $rid = 'win-x64' } default { Write-Error "Nicht unterstuetzte Architektur: $arch. Verfuegbar ist derzeit win-x64." return } } $binary = "update-agent-$rid.exe" $target = Join-Path $targetDir 'update-agent.exe' $temp = Join-Path ([System.IO.Path]::GetTempPath()) ("dc-installer-" + [guid]::NewGuid().ToString('N')) New-Item -ItemType Directory -Path $temp -Force | Out-Null try { Write-Host "Lade $binary von $baseUrl ..." $tempBinary = Join-Path $temp 'agent.exe' Invoke-WebRequest -Uri "$baseUrl/installer/$binary" -OutFile $tempBinary -UseBasicParsing $expected = (Invoke-WebRequest -Uri "$baseUrl/installer/$binary.sha256" -UseBasicParsing).Content.Trim().ToLower() # --------------------------------------------------------- Pruefsumme $actual = (Get-FileHash $tempBinary -Algorithm SHA256).Hash.ToLower() if ($actual -ne $expected) { Write-Error "ABBRUCH: Pruefsumme stimmt nicht ueberein.`n erwartet: $expected`n erhalten: $actual" return } Write-Host 'Pruefsumme in Ordnung.' # ------------------------------------------------------------ Ablegen Move-Item -Path $tempBinary -Destination $target -Force # Von Windows als "aus dem Internet" markierte Dateien loesen beim Start # eine Sicherheitswarnung aus. Die Herkunft ist hier durch die gepruefte # Pruefsumme belegt. try { Unblock-File -Path $target -ErrorAction SilentlyContinue } catch { } Write-Host '' Write-Host "Abgelegt: $target" Write-Host '' Write-Host 'Weiter mit:' Write-Host " & '$target' --action install" Write-Host '' Write-Host 'Nur diese Maschine ueberwachen, ohne etwas zu installieren:' Write-Host " & '$target' --action monitor" Write-Host '' Write-Host "Dafuer werden Benutzername und Passwort eines Kontos der Rolle 'installer'" Write-Host 'gebraucht. Ein Administratorkonto tut es auch, gehoert aber nicht auf ein' Write-Host 'Zielsystem.' } finally { Remove-Item -Recurse -Force $temp -ErrorAction SilentlyContinue }