Существует ли простой способ подключиться к стандартной функции « Установка и удаление программ » с помощью PowerShell для удаления существующего приложения ? Или проверить, установлено ли приложение?
windows
powershell
windows-installer
uninstall
Роб Патерсон
источник
источник
(gwmi Win32_Product | ? Name -eq "Software").uninstall()
Немного кода гольф.РЕДАКТИРОВАТЬ: За эти годы этот ответ получил довольно много голосов. Я хотел бы добавить несколько комментариев. С тех пор я не использовал PowerShell, но помню, что наблюдал некоторые проблемы:
-First 1
но я не уверен. Не стесняйтесь редактировать.Использование объекта WMI занимает вечность. Это очень быстро, если вы просто знаете название программы, которую хотите удалить.
источник
-like "appNam*"
так как версия в названии, и она меняется, но, похоже, не находит программу. Любые идеи?Чтобы исправить второй метод в посте Джеффа Хиллмана, вы можете сделать:
Или
источник
Я обнаружил, что класс Win32_Product не рекомендуется, потому что он вызывает исправления и не оптимизирован для запросов. Источник
Я нашел это сообщение от Sitaram Pamarthi со скриптом для удаления, если вы знаете руководство по приложению. Он также поставляет другой скрипт для поиска приложений очень быстро здесь .
источник
Чтобы добавить немного к этому посту, мне нужно было иметь возможность удалять программное обеспечение с нескольких серверов. Я использовал ответ Джеффа, чтобы привести меня к этому:
Сначала я получил список серверов, я использовал запрос AD , но вы можете предоставить массив имен компьютеров так, как хотите:
Затем я просмотрел их, добавив параметр -computer в запрос gwmi:
Я использовал свойство IdentifyingNumber для сопоставления вместо имени, просто чтобы убедиться, что удаляю правильное приложение.
источник
Назовите это так:
источник
Одна строка кода:
источник
Я сделаю свой маленький вклад. Мне нужно было удалить список пакетов с того же компьютера. Это сценарий, который я придумал.
Я надеюсь, что это окажется полезным.
Обратите внимание, что я обязан Дэвиду Стетлеру за этот скрипт, поскольку он основан на его.
источник
Вот скрипт PowerShell, использующий msiexec:
источник
Основываясь на ответе Джеффа Хиллмана:
Вот функция, которую вы можете просто добавить к своей
profile.ps1
или определить в текущем сеансе PowerShell:Допустим, вы хотели удалить Notepad ++ . Просто введите это в PowerShell:
> uninstall("notepad++")
Просто знайте, что это
Get-WmiObject
может занять некоторое время, так что наберитесь терпения!источник
Использование:
Он не полностью протестирован, но работает под PowerShell 4.
Я запустил файл PS1, как это видно здесь. Позволяет ему извлечь все системы из AD и пытается удалить несколько приложений во всех системах.
Я использовал IdentifyingNumber для поиска причины программного обеспечения ввода Дэвида Стетлерса.
Не проверено:
Что это не так:
Я не смог использовать uninstall (). При попытке получить ошибку, сообщающую, что вызов метода для выражения со значением NULL невозможен. Вместо этого я использовал Remove-WmiObject, который, кажется, делает то же самое.
ПРЕДУПРЕЖДЕНИЕ . Без указания имени компьютера оно удаляет программное обеспечение из ВСЕХ систем в Active Directory.
источник
Для большинства моих программ скрипты в этом посте сделали свою работу. Но мне пришлось столкнуться с устаревшей программой, которую я не мог удалить, используя msiexec.exe или класс Win32_Product. (по какой-то причине я получил выход 0, но программа все еще была там)
Моим решением было использовать класс Win32_Process:
с помощью nickdnk эта команда должна получить путь к файлу деинсталляции exe:
64bit:
32bit:
вам придется очистить строку результата:
Теперь, когда у вас есть соответствующая программа, удалить путь к файлу exe, вы можете использовать эту команду:
вышеупомянутые команды также могут выполняться удаленно - я сделал это с помощью команды invoke, но я считаю, что добавление аргумента -computername может работать
источник