$ErrorActionPreference='Stop' $w=Get-Command winget -ErrorAction SilentlyContinue if(-not $w){throw 'Brak WinGet. Zainstaluj Microsoft App Installer.'} Write-Host 'Lista zainstalowanych aplikacji WinGet:' -ForegroundColor Green & $w.Source list Write-Host 'Do usunięcia wpisz dokładny identyfikator pakietu z listy, np. VideoLAN.VLC.' Write-Host 'Nie usuwaj sterowników, składników Windows ani aplikacji, których nie rozpoznajesz.' -ForegroundColor Yellow $ids=Read-Host 'Identyfikatory po przecinku (Enter: wyjdź)' if(-not $ids.Trim()){return} $names=@($ids -split ',' | ForEach-Object {$_.Trim()} | Where-Object {$_ -match '^[a-zA-Z0-9][a-zA-Z0-9._+-]+$'} | Select-Object -Unique) if(-not $names.Count){throw 'Nie podano prawidłowych identyfikatorów.'} $names | ForEach-Object {Write-Host "DO USUNIĘCIA: $_"} if((Read-Host 'Potwierdź, wpisując ODINSTALUJ') -cne 'ODINSTALUJ'){return} foreach($id in $names){ Write-Host "Usuwanie $id" -ForegroundColor Yellow & $w.Source uninstall --id $id --exact --silent --accept-source-agreements if($LASTEXITCODE -ne 0){Write-Warning "Nie udało się odinstalować $id kod $LASTEXITCODE. Spróbuj odinstalować ręcznie."} }