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

Опубликовано: 14 Марта, 2023
Как удалить программное обеспечение с помощью PowerShell
Изображение 4151
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 отображает список установленных программ.

Изображение 3925
Команда 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}'»