Über SCCM 2012 bereitgestelltes Powershell-Skript zum vollständigen Entfernen von Windows 8.1-Apps

Über SCCM 2012 bereitgestelltes Powershell-Skript zum vollständigen Entfernen von Windows 8.1-Apps

Ich bin auf der Suche nach einer Anleitung zur Durchführung der oben genannten Aufgabe.

Mein Powershell-Skript sieht wie folgt aus. Das Skript entfernt derzeit eine bestimmte benannte App.

$AppsToDelete="*Microsoft.WindowsReadingList*"
 Foreach ($AppName in $AppsToDelete)
 {
     get-appxprovisionedpackage -online | where packagename -like $AppName | remove-appxprovisionedpackage -Online
     Get-AppxPackage -name $AppName -allusers | Remove-AppxPackage
 }

Das von SCCM2012 zum Ausführen des Skripts verwendete Programm ist wie folgt:

PowerShell.exe -ExecutionPolicy UnRestricted -File .\delappsreadinglistonly.ps1

Ich habe ein Programm in SCCM 2012 erstellt und auf einem Client bereitgestellt.

Das Programm wird als Benutzer und nicht als System ausgeführt.

Die Datei EXECMGR.log zeigt mir an, dass das Skript vom Client empfangen wurde und erfolgreich ausgeführt wurde, Exitcode = 0, der Ausführungsstatus ist „Erfolgreich“.

Allerdings befindet sich die Kachel „Leseliste“ immer noch auf dem (Metro?) Startbildschirm, die App „Leseliste“ wird immer noch in der alphabetischen Liste „Apps nach Namen“ angezeigt und kann ausgeführt werden, und verschiedene Ordner sind immer noch in C:\Programme\WindowsApps\ vorhanden.

Hinweise wären willkommen.

Antwort1

Ich sehe zwei mögliche Probleme mit Ihrem Skript:

  1. Die Aufrufe -AppxProvisionedPackageerfordern höchstwahrscheinlich eine Erhöhung der Rechte. Wenn Sie Ihr Skript als Benutzer ausführen, wird wahrscheinlich eine Ausnahme ausgelöst.
  2. Der Aufruf Get-AppxPackage -alluserserfordert Administratorrechte. Die Dokumentationlautet -allusers: „Um diesen Parameter zu verwenden, müssen Sie den Befehl mit Administratorberechtigungen ausführen.“

Mir ist nicht ganz klar, was Ihr Ziel ist. So gehe ich mit dem Kachelchaos auf dem Windows 8.1-Startbildschirm um:

  • Erstellen Sie eine SCCM-Anwendung mit den folgenden Eigenschaften:
    • kein Installer
    • Deinstallationsprogramm, das Remove-AppxPackageeine Liste gängiger Apps aufruft
    • Erkennungsskript für diese Liste von Apps
  • Stellen Sie die Anwendung mit der Deinstallationsaktion auf den betroffenenBenutzer.

Ich verwende diese Strategie, weil dadurch gezielter entschieden werden kann, welche dieser Apps bestimmten Benutzern in Zukunft zur Verfügung stehen, falls sich dies als notwendig erweisen sollte.

Wenn ein Benutzer angemeldet ist, dem diese Anwendung zur Entfernung bereitgestellt wurde, CcmExecerkennt dieser die Anwendung und ruft den Deinstallationsbefehl auf. Nach dem Aufruf des Deinstallationsbefehls sollten die Anwendungen für den Benutzer nicht mehr sichtbar oder verfügbar sein.

Uninstall-Application.ps1

Hier ist der Text des Deinstallationsskripts, das ich verwende. Sie müssen vorsichtig sein, wie Sie PowerShell-Skripts einrichten, die für die (De-)Installation aufgerufen werden, weilExit-Codes sind etwas schwierig zuverlässig aus dem Skript zu bekommen.

$appList =  'Microsoft.BingSports',
            # ...longlist of other apps...
            'Microsoft.WindowsReadingList'
Get-AppxPackage | 
    ? { $_.Name -in $appList } | 
    % { Remove-AppxPackage $_.PackageFullName }

Detect-Application.ps1

Unten sehen Sie den Hauptteil des von mir verwendeten Erkennungsskripts. Beachten Sie, dass die Verwendung von PowerShell-Erkennungsskripts einige Fallstricke mit sich bringt:

Wenn Sie all dies tun, funktionieren PowerShell-Erkennungsskripte wunderbar für komplizierte, chirurgische oder unkonventionelle Erkennungen wie diese.

    $appList =  'Microsoft.BingSports',
            # ...longlist of other apps...
            'Microsoft.WindowsReadingList'
    Get-AppxPackage | 
    ? { $_.Name -in $appList }

verwandte Informationen