Suppression d'applications Windows 10

Supprimer les applications Windows 10 présentes sur un poste de travail n'est pas toujours des plus simple, étant donné qu'elles sont installées d'une part dans un magasin logiciel local, puis dans l'espace utilisateur.
Sans compter certaines (fournies avec Windows) qui, bien que visibles dans "Applications et fonctionnalités", ne peuvent être désinstallées depuis ce panneau de configuration...

Le script ci-dessous a pour objet de répondre au besoin de désinstaller ces applications intégrées.

La liste des noms d'applications pouvant être désinstallées par cette méthode est obtenue par la commande  PowerShell (à exécuter avec les privilèges d'administrateur) :

(Get-ProvisionedAppxPackage -Online).DisplayName

Il n'y a pas de moyen simple en PowerShell d'obtenir la correspondance entre le nom de l'application obtenu par la commande précédente et le nom affiché dans "Applications et fonctionnalités", ceux-ci étant affichés dans la langue de l'utilisateur (et accessoirement parce qu'il y a un certain manque de cohérence dans les données fournies dans les fichiers 'manifest' des applications). Une liste est disponible ici : https://docs.microsoft.com/en-us/windows/application-management/apps-in-windows-10. Les applications supprimables par le script sont celles de la liste "Provisioned Windows Apps".

Le script doit être exécuté avec un compte disposant des droits d'administration locale.

Une fois désinstallées, à partir de Windows 1703, les applications ne sont pas réinstallées lors d'une mise à niveau vers une version plus récente du système.

Elles ne peuvent être réinstallées que depuis le Microsoft Store.

 


 
function Remove-WindowsApps {
<#
  .SYNOPSIS
  Remove Windows Apps based on a list

  .DESCRIPTION
  Fully remove a list of Windows Apps, for new users or existing users profiles

  .PARAMETER AppName
  Name of application to remove, or list of application names to remove

  .EXAMPLE
  Remove-WindowsApps -AppName Microsoft.Getstarted

  .EXAMPLE
  Remove-WindowsApps -AppName @("Microsoft.Getstarted","Microsoft.People")
#>

  [CmdletBinding()]
  Param
  (
    [Parameter(Mandatory = $true)]
    [string[]]$AppName
  )

  Foreach ($app in $AppName) {
    # remove from provisionned application list
    try {
      $winApp = Get-ProvisionedAppxPackage -Online | Where-Object {$_.DisplayName -eq $app}
      if ($null -ne $winApp) {
        Remove-ProvisionedAppxPackage -Online -PackageName $winApp.PackageName -ErrorAction Stop | Out-Null
        Write-Host "$app - Windows Provisioned Application removed" 
      } else {
        Write-Host "$app - not found" 
      }
    } 
    catch {
      $err = $_.Exception.Message
      Write-Host "Error while removing '$app' Windows Provisioned Application" 
      Write-Host $err
    }
    # remove package for users already connected to the computer
    try {
      $winPkg = Get-AppxPackage -AllUsers $app 
      if ($null -ne $winPkg) {
        Remove-AppxPackage -Package $winPkg -AllUsers -ErrorAction Stop | Out-Null
        Write-Host "$app - Windows Application removed"
      } else {
        Write-Host "$app - Appx Package not found" 
      }
    }
    catch {
      $err = $_.Exception.Message
      Write-Host "Error while removing '$app' Windows Application"
      Write-Host $err
    }
  }
}
 

Dernière modification: 

12/01/2019 - 15:45