Hallo zusammen 😊,
ich möchte in PowerShell selbst ein Skript schreiben, was bestimmte Apps deinstalliert. In einem Array sind Schlagwörter enthalten und es sollen alle Apps deinstalliert werden, welche ein jeweiliges Keyword haben. Ich möchte das Ganze dann Keyword für Keyword in einer foreach-Schleife abarbeiten lassen.
Wo es aktuell scheitert ist, dass wenn ich die Schleife ausführe, zwar alle angegebenen Apps deinstalliert werden, jedoch möchte ich eine Statusausgabe mit einbauen.
Nehmen wir mal an das Array ist so aufgebaut:
$appx_keywords = @( "Microsoft.3DBuilder", "Microsoft.BingWeather", "Microsoft.GetHelp" )
Wenn App *Microsoft.3DBuilder* deinstalliert wurde dann springe zum nächsten Schlüsselwort.
Wenn die App noch nicht deinstalliert wurde, warte 5 Sekunden und prüfe, ob die App noch installiert ist. Die Prüfung kann ich mit einer while-Schleife realisieren.
Folgendes Problem habe ich:
- Wenn ich via Get-AppxPackage -AllUsers *$appxkey* | Remove-AppxPackage die Software deinstalliere, springt er sofort zum nächsten Schlagwort wenn ich die while-Schleife nicht einbaue.
- Wenn ich die While einbaue dann bleibt es in einer Dauerschleife hängen.
Ich brauche einen Bezugswert, den ich verwenden kann, ob die App schon deinstalliert wurde oder nicht.
Wenn ich sogar nach der Deinstallation Get-AppXPackage -Name *$appxkey* -AllUsers ausführe, wird mir immer noch ein Eintrag der vorher deinstallierten App angezeigt. Vielleicht ist Ziel das Paket ganz zu löschen?
Ich habe dann versucht, dies mit einem Job zu realisieren in folgender Form. Problem ist nur, mit der nachfolgenden Variante deinstalliert er mir gleich alle Apps auf einmal.
Also folgendes funktioniert nicht:
Start-Job -Name Deinstallprocess -ScriptBlock { Get-AppxProvisionedPackage -online | where {$_.PackageName -like "*$appxkey*"} | Remove-AppxProvisionedPackage -online } Wait-Job -Name Deinstallprocess
Ich möchte, dass das Skript anhand von Schlagwörtern in einem Array eine App findet und deinstalliert. Erst wenn die App wirklich deinstalliert wurde, springe zum nachfolgenden Schlagwort.
NACHTRAG:
Ich habe nun das Paket gelöscht mit
Remove-AppxPackage -Package <Hier der PackageFullName> -AllUsers
Ich glaube so kann ich nun im nachhinein mit while testen, ob das Paket noch zu finden ist. Also den weg welche ich gehe ist das paket selbst erstmal zu deinstallieren und ann zu löschen. Ich bin für weitere Vorschläge offen.
Ich würde mich sehr über Lösungsvorschläge freuen.
Danke & viele Grüße 😊