Desinstalación de programas con PowerShell en Windows 10/11

En este artículo, veremos cómo desinstalar software en una computadora Windows local o remota usando PowerShell. Muy a menudo, el administrador del sistema usa scripts para desinstalar aplicaciones de Windows. Puede usar varios enfoques para eliminar programas desde el símbolo del sistema o los scripts de PowerShell.

Uso de WMI para desinstalar programas en Windows

La forma más común de eliminar programas instalados en Windows es usar comandos que se refieran al espacio de nombres WMI. Por ejemplo, puede consultar el espacio de nombres WMI y obtener una lista de programas instalados con el wmic dominio.

wmic product get name,version

producto wmic obtener nombre, versión - obtener una lista de aplicaciones instaladas

Para desinstalar silenciosamente una aplicación de esta lista, puede usar el siguiente comando:

wmic product where name="VMware vCenter Converter Standalone" call uninstall /nointeractive

El comando llama a un método WMI de desinstalación de la aplicación (vCenter Converter) a través de Windows Installer.

Executing (\COMPNameROOTCIMV2:Win32_Product.IdentifyingNumber="{PROGRAM_GUID}",Name="VMware vCenter Converter Standalone",Version="6.2.0.8466193")->Uninstall()

Si el programa se desinstala con éxito, devolverá:

Method execution successful. Out Parameters: instance of __PARAMETERS {
ReturnValue = 0; };

Aquí hay comandos de PowerShell similares para mostrar y desinstalar aplicaciones a través de WMI:

Get-WmiObject Win32_Product | ft name,version,vendor,packagename
(Get-WmiObject Win32_Product -Filter "Name="XXX"").Uninstall()

Para eliminar un programa en una computadora remota, agregue el -Nombre del ordenador opción. Por ejemplo, para desinstalar Microsoft Office en una computadora remota, ejecute el siguiente comando:

$apps = Get-WmiObject -Class Win32_Product -ComputerName wkmn-man23 |where name -Like "Office 16 Click-to-Run*"
$apps.uninstall()

Sin embargo, este método de eliminación de aplicaciones no es lo suficientemente universal para todos los casos posibles. Si compara la lista de programas devueltos a través del espacio de nombres WMI y la lista de aplicaciones en el Panel de control de Windows/Lista de aplicaciones y características en Configuración (utilice el comando de acceso rápido de Configuración de MS: ms-settings:appsfeatures), verás que difieren. El comando wmi solo mostraba una lista de programas instalados a través de Windows Installer. La lista no incluye la mayoría de las aplicaciones de usuario (navegadores, por ejemplo).

lista completa de programas instalados en windows 10

Además, los programas UWP de Microsoft Store y los módulos de PowerShell (a través de PowerShellGet) no se muestran.

Desinstalar aplicaciones en una computadora remota con el módulo Administrador de paquetes de PowerShell

En las versiones modernas de Windows 10/11 y Windows Server 2022/2019/2016, puede usar el PowerShell integrado Gestión de paquetes cmdlets para instalar o desinstalar aplicaciones. Originalmente, el módulo se usaba para instalar/desinstalar módulos de PowerShell. Sin embargo, también puede usarlo para desinstalar programas Win32, actualizaciones de MSU y aplicaciones instaladas con instaladores de MSI.

Para mostrar una lista completa de aplicaciones instaladas en una computadora local, ejecute el siguiente comando:

Get-Package

Get-Package - Powershell: Exportar lista de aplicaciones

El comando devuelve varias clases de programas instalados a través de los diferentes proveedores (ProviderName). Puede mostrar una lista de proveedores en una computadora de la siguiente manera:

Get-PackageProvider

  • Programas
  • msi
  • msu
  • PowerShellObtener
  • NuGet

lista de proveedores de paquetes en Windows 10

Para mostrar una lista de programas instalados a través de un proveedor específico, ejecute este comando:

Get-Package -ProviderName Programs -IncludeWindowsInstaller

Utilizar el Paquete de desinstalación cmdlet para eliminar el programa:

Get-Package -Name "Notepad++*" | Uninstall-Package

Puede quitar el módulo de PowerShell instalado. Por ejemplo, para desinstalar todos los módulos VMware.PowerCLI:

Get-Package -ProviderName PowerShellGet -Name "VMware.*" | Uninstall-Package

Para desinstalar un programa en una computadora remota, use el cmdlet Invoke-Command:

Invoke-Command -ComputerName mun-dc01 -ScriptBlock { Get-Package -Name "Notepad++*" | Uninstall-Package}

Puede usar este módulo para desinstalar aplicaciones Win32 y módulos PS únicamente. Para eliminar aplicaciones UWP de Microsoft Store, use el Remove-AppxPackage o Remove-AppxProvisionedPackage Cmdlets de PowerShell (vea un ejemplo en este artículo).

¿Cómo desinstalar la aplicación con el comando WinGet?

Puedes usar el nuevo GanarObtener administrador de paquetes (está integrado en Windows 10 y 11) para instalar y eliminar programas en Windows. Para obtener una lista de programas en su computadora, ejecute:

winget list

El comando devuelve una lista de programas, incluidos los instalados con otros métodos que no sean winget, y una lista de aplicaciones UWP (APPX).

Winget lista de aplicaciones instaladas

Para eliminar aplicaciones instaladas a través de WinGet, ejecute el siguiente comando:

winget uninstall --name 7zip.7zip

Para desinstalar una aplicación MSI en Windows, especifique su GUID:

winget uninstall --id "{332C1E78-1D2F-4A64-B718-68095DC6254B}"

Para desinstalar una aplicación para UWP:

winget uninstall --id "Microsoft.ZuneVideo_8wekyb3d8bbwe"

aplicación de desinstalación de winget de cmd

Sin embargo, winget no le permite desinstalar programas en una computadora remota. Para ejecutar el comando winget en una computadora remota, use las funciones de comunicación remota de PowerShell (cmdlets Invoke-Command y Enter-PSSession). Por ejemplo:

Invoke-Command -ComputerName wkmn-man231 -ScriptBlock {winget uninstall --name 7zip.7zip}

Puede usar los scripts de PowerShell que se muestran aquí para desinstalar programas de forma remota o ejecutarlos en equipos de dominio mediante scripts de inicio de sesión SCCM o GPO.

Artículos Interesantes