Wie man vorinstallierte Metro-Apps ab Windows 8 los wird

Wer kennt das nicht? Man bekommt einen neuen PC auf den Tisch und muss ihn für eine/n neue/n Kollegen/in vorbereiten. Sofern man keine nackten PC’s ohne Betriebssystem kauft, kann da schon mal eine ganze Menge an Mist vorinstalliert sein. Früher beschränkte sich das auf das Ausmisten der vorinstallierten Programme über die Systemsteuerung. Seit Window 8 aber Metro Apps eingeführt hat, hat man hier unter Umständen auch einen ganzen Stall voll zu tun. Je nach Anzahl der vorinstallierten Apps dauert die ersten Anmeldung am PC für einen Benutzer schon mal ein paar Minuten und er kann sich dem tollen Farbwechselspiel von Windows hingeben.

Hello

Hallo! Ein paar Dinge müssen noch erledigt werden. Es dauert nicht lange. Oft aber doch.

Aber wie wird man diesen Wust von Apps jetzt los? App deinstallieren, na klar! Schließlich kann man auf der Startseite (Die Kachelseite bei Windows 8.x) oder im Startmenü (ab Windows 10) einen Rechtsklick auf die App machen und Deinstallieren auswählen.

AppxDeinstall

Windows Store App per rechtsklick Deinstallieren

Der Haken an der Sache? Die App wird nur für den angemeldeten Benutzer deinstalliert. Setzt sich jemand anderes an den PC und meldet sich das erste Mal an, bekommt er diese App installiert. Woran liegt das? Seit Windows 8 kann Microsoft und auch der PC Hersteller das Betriebssystem mit bestimmten Apps vorausstatten, Stichwort Provisioned Apps. Durch das bereitstellen der Apps im OS bekommt jeder Nutzer bei der Erstanmeldung diese Apps installiert.

Der Trick ist jetzt die Apps aus dieser Bereitstellung zu entfernen. Hierzu bietet Microsoft Powershell CmdLets an (yeah!). Aber auch hier lauern Fallstricke. Sofern man noch nicht über den Begriff „provisioned“ gestolpert ist, findet man zunächst das CmdLet Get-AppxPackage:

Wenn man sich etwas weiter vor wagt, findet man auch das CmdLet Remove-AppxPackage um dann aber festzustellen, dass man damit nur die während der Erstanmeldung installierten Apps (und natürlich später aus dem Windows Store installierte Apps) für den aktuellen Benutzer entfernen kann (stimmt bei genauerer Betrachtung nicht, aber soll jetzt nicht Thema sein). Remove-AppxPackage macht im Prinzip nix anderes, als rechtsklick auf die App und Deinstallieren auswählen, ändert also nichts an der Anzahl der bereitgestellten Apps.

Aber es gibt auch noch das CmdLet Get-AppxProvisionedPackage und damit wird die Sache interessant. Dieses CmdLet listet alle bereitgestellten Apps auf, sowohl die von Microsoft selbst, als auch die evtl. nachträglich vom PC-Hersteller bereitgestellten:

Obige Ausgabe stammt von meinem Lenovo ThinkPad, und da sind schon eine Menge Apps vorinstalliert, wenn auch hauptsächlich von Microsoft. Der Schalter -Online macht außerdem deutlich, dass man neben dem laufenden Betriebssystem auch die Abbilder auf Installationsmedien anpassen kann. Wenn man weiß, dass die bisher genannten CmdLets zum PowerShell Modul DISM gehören, verwundert das auch nicht mehr.

Neben dem Get-AppxProvisionedPackage gibt es auch hier ein Remove-AppxProvisionedPackage CmdLet. Und mit diesem habe ich mich etwas genauer auseinander gesetzt. Grundsätzlich benötigt das CmdLet den Appx PackageName, allerdings gibt es einen Unterschied zwischen DisplayName und PackageName. Beides lässt sich aber aus dem Objekt extrahieren:

In Zeile 8 der Ausgabe spuckt und das CmdLet den benötigten PackageName aus. Um diese App jetzt aus der Bereitstellung zu entfernen könnte man jetzt mit folgendem Einzeiler arbeiten:

Feine Sache. Aber ich wollte das ganze Automatisieren und habe begonnen mir ein Script zu schreiben. Mein Wunsch war, dass ich mit jedem Aufruf des Scripts selbst bestimmen kann, welche vorinstallierten Apps deinstalliert werden sollen. Außerdem habe ich beschlossen, dass es doch ein paar vorinstallierte Apps gibt, die mir sinnvoll erscheinen (z.B. Taschenrechner, oder auch Fotoanzeige). Und das Ergebnis sieht dann so aus:

Fehler oder Verbesserungsvorschläge könnt Ihr gerne in den Kommentaren hinterlassen. Ich erhebe keinen Anspruch darauf, das ultimative Script geschrieben zu haben. Wer sich den Ablauf des Scriptes ansehen möchte, kommentiert einfach Zeile 79 aus. Wer mag, kann sich mein Script gerne herunterladen: AppxRemove_Provisioned.ps1 Einsatz natürlich auf eigene Gefahr 🙂

Wenn Interesse besteht kann ich das Script, bzw. Powershell im Zusammenspiel mit DISM gerne auf einem der nächsten Treffen der PowerShell Usergroup Süddeutschland vorstellen.

Veröffentlicht in Admin Kram, Powershell Getagged mit: , , , , , ,
2 Kommentare zu “Wie man vorinstallierte Metro-Apps ab Windows 8 los wird
  1. Stefan sagt:

    Zunächst einmal vielen Dank für das Script. Sehr gut.

    Zwei Sachen sind mir allerdings aufgefallen. Es scheint für den User, der den Rechner aufsetzt und somit schon angemeldet ist nicht zu wirken. Dafür würde dann ein zweites Script benötigt, dass die Apps für diesen User löscht?

    Zum anderen scheinen einige Verknüpfungen trotzdem erhalten zu bleiben. Nach der Bereinigung des PCs durch das Script und der Anmeldung durch einen neuen AD Testuser fanden sich im Startmenü auf der rechten Seite trotzdem noch Verknüpfungen. Diese führten dann nicht mehr direkt zu der App sondern in den AppStore um diese zu laden. Kann man auch diese Vorgaben bereinigen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*