Как удалить программное обеспечение с помощью PowerShell


Большинство из нас удалили программы с наших компьютеров. Как вы это сделали? Вы можете вспомнить?
Мы делали это в основном с помощью панели управления или, в некоторых случаях, при работе с более сложными пакетами, с помощью собственного процесса удаления.
Эти параметры удобно удалять одной программой, они не масштабируются. Представьте на мгновение, что вы ИТ-администратор и хотите удалить программы с нескольких компьютеров. Вход в каждое устройство и удаление программы — не самый продуктивный вариант.
К счастью, вы можете использовать сценарии PowerShell для удаления программного обеспечения. Преимущество заключается в том, что вы можете отправить любому количеству компьютеров в сети команду удаления . Таким образом, вы можете удалить программу с тысяч компьютеров всего одним скриптом .
Звучит просто, правда? Давайте приступим и посмотрим, как удалить программное обеспечение с помощью PowerShell.
Что такое Microsoft PowerShell?
Microsoft PowerShell — это менеджер автоматизации задач и конфигурации, состоящий из языка сценариев и приглашения командной строки. Он поставляется со многими встроенными командами, называемыми командлетами, которые выполняют определенную функцию или задачу. Вы можете объединить эти командлеты в настраиваемый сценарий для выполнения нужной задачи — автоматизации сложных или трудоемких задач.
2 способа удалить программное обеспечение с помощью PowerShell
Вы можете удалить программное обеспечение с помощью PowerShell двумя способами : методом Uninstall() и командой Uninstall-Package . Из этих двух метод Uninstall() является самым популярным и самым простым способом удаления известных программ с устройства.
Второй вариант — это Uninstall-Package , это хороший выбор для скрытых программ и тех, которые PowerShell не идентифицирует.
Начнем с первого варианта.
1. Метод удаления
В этом пошаговом руководстве вы изучите команды для удаления программного обеспечения с одного компьютера. Вы всегда можете использовать цикл For-each, чтобы расширить его до коллекции или массива компьютеров, чтобы выполнить итерацию по каждому компьютеру в массиве и выполнить одно и то же действие.
Шаг 1: Получите список установленных приложений
В качестве первого шага получите список приложений, установленных на компьютере. Код PowerShell для этого:
Get-WmiObject -Class Win32_Product | Select-Object -Имя свойства
Теперь вы можете задаться вопросом, зачем нужно получать список установленных приложений ? Ведь вам нужно всего лишь удалить одно приложение с компьютера. Загвоздка в том, что вы должны знать точное имя приложения, поскольку PowerShell читает и отображает его. Например, вы можете использовать слова «Microsoft Outlook» в своем коде для удаления Outlook с компьютера. Что, если он называется «Microsoft Outlook 2019»? Это несоответствие либо выдаст сообщение об ошибке, либо команда просто не будет выполнена. Избегайте путаницы и посмотрите, как PowerShell читает имя программного обеспечения, а затем используйте именно это имя в своем коде для удаления.
Вот пример, на изображении ниже показано, как Get-WmiObject отображает список установленных программ.

Шаг 2. Сократите список
Приведенный выше список программ может показаться ошеломляющим даже на устройствах с несколькими установленными программами. Вы можете сузить его, используя фильтры и регулярные выражения, если у вас есть представление о названии вашей программы. В приведенном выше примере вы можете попросить PowerShell сузить список до программ, содержащих слово «Outlook», поскольку это уникальное слово. Если вы используете «Microsoft», вы можете получить больший список! В общем, убедитесь, что вы выбираете выражения и слова, которые с наибольшей вероятностью помогут вам найти нужную программу.
$MyProgram = Get-WmiObject -Class Win32_Product | Where-Object{$_.Name -eq «Outlook»}
Это сузит список до всех версий Microsoft Outlook, установленных в вашей системе. Выберите из этого списка версию, которую хотите удалить. Если у вас установлена только одна версия, то ковырять нечего, и MyProgram сохраняет значение в переменной.
Шаг 3: Используйте метод удаления
PowerShell поставляется со встроенным методом Uninstall() . Просто вызовите этот метод в своей программе, чтобы удалить его. В нашем примере выше это будет
$MyProgram.uninstall()
Эта команда удалит вашу программу. Вы также можете заменить переменную $MyProgram фактическим именем программы.
Этот процесс — самый простой способ удалить программу с помощью PowerShell. Тем не менее, некоторые скрытые программы могут существовать, и они не будут перечислены с помощью команды Get-WmiObject.
Откройте панель управления и посмотрите список программ, чтобы проверить это. Сравните его со списком, отображаемым PowerShell, и вы заметите, что некоторые из них не включены.
2. Используйте Uninstall-Package
Используйте этот параметр, если PowerShell не указывает вашу программу. Код для этой команды PowerShell:
Get-Package -Provider Programs -IncludeWindowsInstaller -Name «BackZilla»
Чтобы PowerShell отображал все программы на Панели управления , используйте звездочку вместо параметра Name. Обратите внимание: если вы установили несколько версий, эта команда удалит только последнюю версию.
В приведенном выше примере это будет:
Uninstall-Package-Name BackupZilla 3.0
Вы также можете удалить конкретную версию или направить вывод Get-Package в Uninstall-Package . Вот пример.
Get-Package -Name BackupZilla -RequiredVersion 2.0 | Удалить-Пакет
Таким образом, вы можете удалить любую программу с устройства, даже если она скрыта!
Сравнение обоих методов удаления
Итак, какой из двух выбрать? Если командлет Get-WmiObject отображает имеющуюся у вас программу, метод удаления является более простым выбором. Тем не менее, если вам нужно создать собственный сценарий для удаления программ на нескольких компьютерах, выберите Uninstall-Package.
Заключительные слова
Скрипты PowerShell удобны для удаления программы на нескольких устройствах. Вы можете автоматизировать этот процесс и сэкономить время и усилия, написав всего несколько строк кода. Вы можете удалить программное обеспечение с помощью PowerShell двумя способами — Get-WmiObject и Uninstall-Package . Из этих двух пакетов Uninstall-package имеет больше параметров и предоставляет более широкий доступ к обычным и скрытым программам, в то время как команда Get-WmiObject может использовать только связанные классы WMI.
Какой из двух лучше? Это зависит от программного обеспечения, которое вы хотите удалить. Если PowerShell Get-WmiObject распознает его, используйте этот вариант, так как он проще. В противном случае используйте Uninstall-Package .
Часто задаваемые вопросы
Что такое Get-WmiObject?
Командлет Get-WmiObject использует инструментарий управления Windows (WMI) для получения конкретной информации о вашем устройстве. Тем не менее, он может получить информацию только со связанными классами WMI. Вот несколько примеров.
Get-WmiObject -Class Win32_Bios — загружает BIOS.
Get-WmiObject -Namespace «root» — получает корневое пространство имен.
Get-WmiObject -Class Win32_Service -ComputerName 1.1.1.1 — отображает службы, работающие на конкретном компьютере.
В чем разница между Get-WmiObject и Get-CIMInstance?
Get-CIMInstance заменил Get-WmiObject из PowerShell 3.0. Вывод обоих этих классов идентичен на локальном компьютере, но Get-CIMInstance работает и на удаленном компьютере. В общем, Microsoft представила классы CIM, чтобы воспользоваться преимуществами удаленного управления Windows (WinRM).
Что происходит, когда программы вообще не существует?
Ничего такого! Get-WmiObject PowerShell просто ничего не возвращает, и это указывает на то, что программа не существует. Если вы ошибетесь в названии программного обеспечения, PowerShell также ничего не вернет!
Могу ли я использовать идентификационный номер программного обеспечения для его удаления?
Да, вы можете использовать идентификационный номер. Просто используйте эту опцию в параметре фильтра вместо имени.
Get-WmiObject -Class Win32_Product -Filter «Идентификационный номер = '{33D90MLP-2E35-7 DWR-903T-1V6W78501MQ0}'»