Alle Programme aktualisieren (winget)

Nutzt den in Windows eingebauten Paketmanager winget: zeigt veraltete Programme an und aktualisiert alle auf einmal oder einzeln. Programme, die winget nicht kennt, bleiben unberührt. Fehlt winget, hilft das Skript beim Nachinstallieren aus dem Microsoft Store.

programme-aktualisieren.cmd 3,4 KB · läuft unter Windows 10/11 · aktualisiert am 17.10.2026 · 0 Downloads

SHA-256: 38e6cbb8746c37519b21e8c232225ce1ed454bda39efe94b2e344a43c75d275b

Code

So sieht die Datei aus, die Sie herunterladen (80 Zeilen). Die Kommentare oben im Skript erklären, was es tut.

programme-aktualisieren.cmd
<# : Friederich-IT - Programme aktualisieren (winget)
@echo off
setlocal
chcp 65001 >nul
title Programme aktualisieren - Friederich-IT
set "FIT_SELF=%~f0"
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "iex ([IO.File]::ReadAllText($env:FIT_SELF,[Text.Encoding]::UTF8))"
exit /b %errorlevel%
#>
# ==========================================================================
#  Programme aktualisieren                         Version 1.0, Oktober 2026
#  https://friederich-it.de/downloads
#
#  Nutzt den in Windows 10/11 eingebauten Paketmanager "winget", um
#  veraltete Programme zu finden und auf den neuesten Stand zu bringen –
#  alle auf einmal oder einzeln. Programme, die winget nicht kennt,
#  werden nicht angefasst. Einzelne Programme können während des Updates
#  nach Administratorrechten fragen.
# ==========================================================================
$ErrorActionPreference = 'Continue'
try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch {}
$ok = '--accept-source-agreements'
$pk = '--accept-package-agreements'

Write-Host ''
Write-Host '  Programme aktualisieren (winget)' -ForegroundColor Cyan
Write-Host '  ================================' -ForegroundColor Cyan
Write-Host ''

if (-not (Get-Command winget -ErrorAction SilentlyContinue)) {
    Write-Host '  winget wurde nicht gefunden.' -ForegroundColor Yellow
    Write-Host '  Abhilfe: Im Microsoft Store den "App-Installer" installieren oder aktualisieren,'
    Write-Host '  danach dieses Skript erneut starten.'
    Write-Host ''
    Write-Host '  [S] Store öffnen   [Enter] Beenden' -ForegroundColor DarkGray
    $t = [Console]::ReadKey($true)
    if ($t.KeyChar -in 's', 'S') { Start-Process 'ms-windows-store://pdp/?ProductId=9NBLGGH4NNS1' }
    exit
}

function Show-Liste {
    Write-Host '  Suche nach Updates (das kann einen Moment dauern) ...' -ForegroundColor DarkGray
    Write-Host ''
    winget upgrade $ok --include-unknown
    Write-Host ''
}

Show-Liste
while ($true) {
    Write-Host '  [A] Alle aktualisieren   [E] Einzelnes Programm   [L] Liste neu laden   [Enter] Beenden' -ForegroundColor DarkGray
    $t = [Console]::ReadKey($true)
    if ($t.Key -eq 'Enter' -or $t.Key -eq 'Escape') { break }
    switch -Regex ([string]$t.KeyChar) {
        '^[aA]$' {
            Write-Host ''
            Write-Host '  Alle Programme werden aktualisiert. Bitte geöffnete Programme vorher schließen.' -ForegroundColor Yellow
            Write-Host '  Wirklich starten? (j/n) ' -NoNewline
            $j = [string][Console]::ReadKey($true).KeyChar; Write-Host $j
            if ($j -in 'j', 'J') {
                winget upgrade --all $ok $pk
                Write-Host ''
                Write-Host '  Fertig. Falls einzelne Updates fehlgeschlagen sind, steht es oben in der Ausgabe.' -ForegroundColor Green
                Write-Host ''
            }
        }
        '^[eE]$' {
            Write-Host ''
            $id = (Read-Host '  ID aus der Spalte "ID" eingeben (z. B. Mozilla.Firefox)') -replace '["''`;&|<>]', ''
            $id = $id.Trim()
            if ($id -match '^[\w.+-]{2,100}$') {
                winget upgrade --id $id --exact $ok $pk
                Write-Host ''
            } elseif ($id) {
                Write-Host '  Ungültige ID.' -ForegroundColor Yellow
            }
        }
        '^[lL]$' { Write-Host ''; Show-Liste }
    }
}