В этой статье мы рассмотрим, как в Windows удалить установленные программы на локальном и удаленном компьютере с помощью PowerShell. Довольно часто в скриптах и сценариях автоматизации приходится использовать различные блоки кода для удаления установленных программ Windows. Для удаления программ из командной строки или скриптами PowerShell можно использовать несколько подходов.
Чаще всего для удаления установленных программ в Windows используют команды, обращающиеся к пространству имен WMI. Например, с помощью утилиты wmic можно вывести список установленных программ :
wmic product get name,version
Для тихого удаления программы из этого списка можно использовать такую команду:
wmic product where name="VMware vCenter Converter Standalone" call uninstall /nointeractive
Команда вызовет WMI метод удаления программы VMware vCenter Converter Standalone через Windows Installer.
Executing (\COMPNameROOTCIMV2:Win32_Product.IdentifyingNumber="{PROGRAM_GUID}",Name="VMware vCenter Converter Standalone",Version="6.2.0.8466193")->Uninstall()
Если удаление программы выполнено успешно, она вернет:
Method execution successful. Out Parameters: instance of __PARAMETERS { ReturnValue = 0; };
Аналогичные 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 namespace и список программ в панели управления Windows 10 ( команда ms-settings:appsfeatures
), вы увидите, что они отличаются. Команда вывела список программ, установленных через Windows Installer. В списке нет большинства пользовательских программ (например, браузеров).
Также не выводятся UWP программы из Microsoft Store, установленные модули PowerShell (через PowerShellGet) и т.д.
В современных версиях Windows 10/11 и Windows Server 2022/2019/2016 для установки и удаления программ можно использовать командлеты из модуля PowerShell Package Management . Изначально модуль использовался для установки/удаления PowerShell модулей. Однако вы можете использовать его и для удаления Win32 программ, MSU обновлений , программ установленных помощью MSI установщиков.
Чтобы вывести полный список установленных программ на локальном компьютере, выполните команду:
Get-Package
Команда вернет несколько классов программ, установленных через разные провайдеры (ProviderName). Полный список доступных провайдеров на компьютере можно вывести так:
Get-PackageProvider
Чтобы вывести список программ, установленных с помощью определенного провайдера, выполните:
Get-Package -ProviderName Programs -IncludeWindowsInstaller
Для удаления программы нужно использовать командлет Uninstall-Package :
Get-Package -Name "Notepad++*" | Uninstall-Package
Можно удалить установленный PowerShell модуль. Например, чтобы удалить все модули VMware.PowerCLI :
Get-Package -ProviderName PowerShellGet -Name "VMware.*" | Uninstall-Package
Для удаления программы на удаленном компьютер, воспользуйтесь командлетом Invoke-Command :
Invoke-Command -ComputerName Msk-Ser01 -ScriptBlock { Get-Package -Name "Notepad++*" | Uninstall-Package}
Данный модуль можно использовать только для удаления программ Win32 и модулей. Для удаления UWP программ Microsoft Store нужно использовать PowerShell командлеты Remove-AppxPackage
и Remove-AppxProvisionedPackage
(см. Пример в статье ).
Для установки и удаления программ в Windows можно использовать новый менеджер пакетов winget (встроен в современные версии Windows 10 и 11). Чтобы вывести список программ на компьютере, выполните:
Winget list
Команда вернет список программ, в том числе установленных не через winget, а также список UWP приложений.
Для удаления программ, установленной через WinGet нужно выполнить команду:
winget uninstall --name 7zip.7zip
Для удаление MSI приложения Windows нужно указать его 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}
Вы можете использовать рассмотренные здесь PowerShell скрипты для удаленного удаления программ, или в сценариях запуска команд на компьютерах в сети через SCCM или logon скрипты GPO .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…