Fix: handle GPO ExecutionPolicy override gracefully, remove ErrorActionPreference Stop

This commit is contained in:
2026-05-04 12:11:38 +02:00
parent 130321c4e8
commit 9f0f8b69d0

View File

@ -1,7 +1,7 @@
# TLS 1.2 erzwingen (notwendig auf Windows Server 2016 / älteren Systemen) # TLS 1.2 erzwingen (Windows Server 2016 / aeltere Systeme)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Adminrechte prüfen und ggf. neu starten # Adminrechte pruefen und ggf. neu starten
$isAdmin = ([Security.Principal.WindowsPrincipal] ` $isAdmin = ([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent() ` [Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
@ -13,19 +13,34 @@ if (-not $isAdmin) {
exit exit
} }
$ErrorActionPreference = 'Stop'
Write-Host "============================================================" Write-Host "============================================================"
Write-Host " upterm Setup" Write-Host " upterm Setup"
Write-Host "============================================================" Write-Host "============================================================"
Write-Host "" Write-Host ""
# 1. Execution Policy # 1. Execution Policy pruefen
Write-Host "[1/4] Setze PowerShell Execution Policy..." Write-Host "[1/4] Pruefe Execution Policy..."
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force $policy = Get-ExecutionPolicy -Scope CurrentUser
Write-Host " OK" if ($policy -in @('Bypass', 'Unrestricted', 'RemoteSigned')) {
Write-Host " OK (aktuell: $policy)"
} else {
try {
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Write-Host " OK"
} catch {
# GPO ueberschreibt - wenn aktuelle Policy ausfuehrbar ist, weitermachen
$effective = Get-ExecutionPolicy
if ($effective -in @('Bypass', 'Unrestricted', 'RemoteSigned')) {
Write-Host " GPO-Ueberschreibung - aktuelle Policy '$effective' ist ausreichend"
} else {
Write-Host "FEHLER: Execution Policy '$effective' blockiert Ausfuehrung."
Read-Host "Enter zum Beenden"
exit 1
}
}
}
# 2. Scoop prüfen / installieren # 2. Scoop pruefen / installieren
Write-Host "[2/4] Pruefe Scoop..." Write-Host "[2/4] Pruefe Scoop..."
$scoopShims = "$env:USERPROFILE\scoop\shims" $scoopShims = "$env:USERPROFILE\scoop\shims"
$scoopInstalled = (Test-Path "$scoopShims\scoop.ps1") -or (Test-Path "$scoopShims\scoop.cmd") $scoopInstalled = (Test-Path "$scoopShims\scoop.ps1") -or (Test-Path "$scoopShims\scoop.cmd")
@ -38,7 +53,7 @@ if (-not $scoopInstalled) {
Write-Host " Scoop bereits vorhanden." Write-Host " Scoop bereits vorhanden."
} }
# PATH dieser Session aktualisieren damit scoop sofort verfuegbar ist # PATH dieser Session aktualisieren
if ($env:PATH -notlike "*$scoopShims*") { if ($env:PATH -notlike "*$scoopShims*") {
$env:PATH = "$env:PATH;$scoopShims" $env:PATH = "$env:PATH;$scoopShims"
} }
@ -46,14 +61,17 @@ if ($env:PATH -notlike "*$scoopShims*") {
# 3. 7zip mit lessmsi-Workaround # 3. 7zip mit lessmsi-Workaround
Write-Host "[3/4] Installiere 7zip via lessmsi..." Write-Host "[3/4] Installiere 7zip via lessmsi..."
scoop config use_lessmsi true scoop config use_lessmsi true
$7zipOk = $false
try { try {
scoop install 7zip 2>&1 | Out-Null scoop install 7zip 2>&1 | Out-Null
} catch { $7zipOk = $true
} catch {}
if (-not $7zipOk) {
Write-Host " 7zip fehlgeschlagen - bereinige und versuche erneut..." Write-Host " 7zip fehlgeschlagen - bereinige und versuche erneut..."
scoop uninstall 7zip 2>$null scoop uninstall 7zip 2>$null
scoop cache rm 7zip 2>$null scoop cache rm 7zip 2>$null
Remove-Item -Recurse -Force "$env:USERPROFILE\scoop\apps\7zip" ` Remove-Item -Recurse -Force "$env:USERPROFILE\scoopppszip" -ErrorAction SilentlyContinue
-ErrorAction SilentlyContinue
scoop install 7zip scoop install 7zip
} }
Write-Host " OK" Write-Host " OK"