В этой статье мы рассмотрим, как в Windows удалить установленные приложения на локальном и удаленном компьютере с помощью PowerShell. Довольно часто в скриптах и сценариях автоматизации приходится использовать различные блоки кода для удаления установленных приложения Windows. Для удаления приложения из командной строки или скриптами PowerShell можно использовать несколько подходов.
Приобрести Windows 10-11 можно у нас в каталоге:
Windows 11 — от 1490 ₽
Windows 10 — от 1110 ₽
Чаще всего для удаления установленных приложений в Windows используют команды, обращающиеся к пространству имен WMI. Например, с помощью утилиты wmic можно вывести список установленных приложений:
wmic product get name,version
Для тихого удаления приложения из этого списка можно использовать такую команду:
wmic product where name="VMware vCenter Converter Standalone" call uninstall /nointeractive
Команда вызовет WMI метод удаления приложения через Windows Installer.
Аналогичные команды в PowerShell для вывода и удаления приложений через WMI:
Get-WmiObject Win32_Product | ft name,version,vendor,packagename
(Get-WmiObject Win32_Product -Filter "Name = 'XXX'").Uninstall()
Чтобы удалить приложение на удаленном компьютере, нужно добавить параметр –ComputerName. Например, чтобы удалить Microsoft Office на удаленном компьютере, выполните:
$apps = Get-WmiObject -Class Win32_Product -ComputerName wks-pc11s22 |where name -Like "Office 16 Click-to-Run*"
$apps.uninstall()
Однако, этот способ не будет универсальным. Список приложений, возвращаемый через WMI, отличается от списка приложений в панели управления Windows. Через WMI видны только приложения, установленные через Windows Installer, но не пользовательские приложения Microsoft Store.
В современных версиях Windows 10/11 и Windows Server можно использовать командлеты из модуля Package Management для удаления приложений. Чтобы вывести полный список установленных приложений, выполните команду:
Get-Package
Команда вернет несколько классов приложений, установленных через разные провайдеры (ProviderName). Полный список доступных провайдеров можно вывести так:
Get-PackageProvider
— Programs
— Msi
— Msu
— PowerShellGet
— NuGet
Чтобы вывести список приложений, установленных с помощью определенного провайдера:
Get-Package -ProviderName Programs -IncludeWindowsInstaller
Для удаления приложения используйте командлет Uninstall-Package:
Get-Package -Name "Notepad++*" | Uninstall-Package
Для удаления приложения на удаленном компьютере с помощью Invoke-Command:
Invoke-Command -ComputerName Msk-Ser01 -ScriptBlock { Get-Package -Name "Notepad++*" | Uninstall-Package }
Менеджер пакетов WinGet позволяет устанавливать и удалять приложения в Windows 10/11. Чтобы вывести список приложений на компьютере, выполните:
winget list
Команда вернет список приложений, в том числе установленных не через winget, а также список UWP приложений.
Для удаления приложения выполните команду:
winget uninstall --name 7zip.7zip
Для удаления приложения MSI с указанием GUID:
winget uninstall --id "{332C1E78-1D2F-4A64-B718-68095DC6254B}"
Для удаления приложения UWP:
winget uninstall --id "Microsoft.ZuneVideo_8wekyb3d8bbwe"
Однако, winget не позволяет удалить приложения на удаленном компьютере. Для запуска команд winget на удаленном компьютере нужно использовать возможности PowerShell Remoting (командлеты Invoke-Command и Enter-PSSession). Например:
Invoke-Command -ComputerName pc2122sd1 -ScriptBlock {winget uninstall --name 7zip.7zip}
Эти команды и скрипты могут быть использованы для автоматизации удаления приложений, как на локальных, так и на удаленных компьютерах.