Windows-10-Apps per PowerShell löschen

Mit einem PowerShell-Skript kann man elegant beliebig viele unerwünschte Windows-10-Store-Apps auf einmal deinstallieren.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 3 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Mit einem PowerShell-Skript kann man elegant beliebig viele unerwünschte Windows-10-Store-Apps auf einmal deinstallieren.

Microsoft liefert in Windows 10 für alle Benutzer einige Apps aus seinem App-Store mit, die ich nicht brauche, zum Beispiel weil ich auf meinen PCs nicht spiele, keine 3D-Objekte drucken will oder eine entsprechende Funktion wie eine Wettervorhersage lieber auf einer Website nachschaue. Auch Werbeapps wie DolbyAccess will ich nicht haben. Einige wenige wie MSPaint, Sticky Notes und WindowsCalculator will ich manchmal verwenden.

In Anlehnung an die Diskussion zu einem einem anderen PowerShell-Beitrag sei erwähnt, dass man sich natürlich der unerwünschten Apps durch eine Klickorgie unter Add and remove programs entledigen kann. Ich bin aber kein Fan vom Klicken, wenn ich das häufiger und auf mehreren PCs immer wieder machen muss.

Hier meine Lösung per PowerShell: Zunächst einmal lässt man sich die auf dem Windows-10-PC vorhandenen Apps anzeigen:

Get-AppxPackage | where { $_.SignatureKind -eq "Store" -and $_.isframework -eq $false } | Format-Table

Die unerwünschten Paketnamen (ein signifikanter Teil des Namens reicht) packt man dann in die Liste zu Beginn des nachfolgenden Skripts. Das Skript kann jeder normale Benutzer für sich starten:

# Unerwünschte Apps anzeigen und ggf. entfernen (für den aktuellen Benutzer)
# Holger Schwichtenberg, www.IT-Visions.de, 2019

$unerwünschteApps = "xbox", "BingNews", "Dolby", "BingWeather", "Zune", "WindowsCamera", "WindowsMaps","Microsoft.People","PhotoShopExpress","Microsoft.OneConnect","Solitaire","Print3D","SoundRecorder","Duolingo","freshpaint"
$remove = $true

foreach($a in $unerwünschteApps)
{
Write-Host "Installierte Apps mit $a im Titel:" -ForegroundColor Yellow
$menge = Get-AppxPackage | where name -like "*$a*" # Get-AppxProvisionedPackage -Online / DisplayName
$menge | ft
if ($menge.length -eq 0) { Write-Host "Keine :-)" -ForegroundColor green }
else { if ($remove) {
"Entferne $($menge.length) Apps.."
$menge | Remove-AppxPackage # Remove-AppxProvisionedPackage -online

$menge = Get-AppxPackage | where name -like "*$a*"
if ($menge.length -gt 0)
{
Write-Host "folgende Apps wurden NICHT entfernt:" -ForegroundColor red
$menge | ft
}
}
}
}

Das Skript prüft nach dem Löschen, ob es noch Apps mit der Zeichenkette im Namen gibt. Einige Apps lassen sich nicht deinstallieren, zum Beispiel Microsoft.XboxGameCallableUI.

Das Skript muss man für jeden Benutzer ausführen, der ein Benutzerkonto hat. Für neue Benutzer kann man die Installation der Apps beim ersten Anmelden verhindern, indem man die zugehörigen Pakete aus Windows entfernt. Das geht mit dem nächsten Skript. Dafür muss man aber als Administrator angemeldet sein, und das Skript muss "elevated" laufen.

# Unerwünschte App-Pakete entfernen (verhindert App-Installation für neue Benutzerkonten)
# Holger Schwichtenberg, www.IT-Visions.de, 2019

$unerwünschteApps = "xbox", "BingNews", "Dolby", "BingWeather", "Zune", "WindowsCamera", "WindowsMaps","Microsoft.People","PhotoShopExpress","Microsoft.OneConnect","Solitaire","Print3D","SoundRecorder","Duolingo","freshpaint"
$remove = $true

foreach($a in $unerwünschteApps)
{
Write-Host "App-Pakete mit $a im Titel:" -ForegroundColor Yellow
$menge = Get-AppxProvisionedPackage -Online | where DisplayName -like "*$a*"
$menge | ft
if ($menge.length -eq 0) { Write-Host "Keine :-)" -ForegroundColor green }
else { if ($remove) {
"Entferne $($menge.length) App_Pakete.."
$menge | Remove-AppxProvisionedPackage -online

$menge = Get-AppxProvisionedPackage -Online | where DisplayName -like "*$a*"
if ($menge.length -gt 0)
{
Write-Host "folgende Apps wurden NICHT entfernt:" -ForegroundColor red
$menge | ft
}
}
}
} ()