Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Удаление 1с

Ответить
Настройки темы
PowerShell - [решено] Удаление 1с
za1 za1 вне форума

Аватара для za1

Старожил


Сообщения: 225
Благодарности: 14

Профиль | Отправить PM | Цитировать


Доброго времени суток, уважаемые.
Нашел в инете 2 очень похожих способа удаления 1с через PS:
1) Рабочий
Код: Выделить весь код
$app = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match «1c»}
$app.Uninstall()
2) Выдает ошибку
Код: Выделить весь код
(Get-WmiObject Win32_Product -Filter "Name = '1С:Предприятие 8 (8.3.8.2197)'").Uninstall()
Ошибка:
Код: Выделить весь код
Нельзя вызвать метод для выражения со значением NULL.
строка:1 знак:89
+ (Get-WmiObject Win32_Product -Filter "Name = '1С:Предприятие 8 (8.3.8.2197)'").Uninstall <<<< ()
    + CategoryInfo          : InvalidOperation: (Uninstall:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
Может кто-нибудь разъяснить, почему не работает 2 способ?

И как можно удалить программу, которая не отображается через
Код: Выделить весь код
Get-WmiObject Win32_Product -List

Отправлено: 16:41, 06-09-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата za1:
Может кто-нибудь разъяснить, почему не работает 2 способ? »
Например, потому, что запрос Wbem возвращает пустой набор. То бишь, Ваш фильтр:
Цитата za1:
Код: Выделить весь код
… -Filter "Name = '1С:Предприятие 8 (8.3.8.2197)'" …
»
не находит ни одного подходящего экземпляра класса Win32_Product.

Впрочем, первый способ ничем не лучше, и так же чреват возможными ошибками исполнения.

Цитата za1:
И как можно удалить программу, которая не отображается через »
Тупо перебирать в реестре машинный и пользовательские разделы Software\Microsoft\Windows\CurrentVersion\Uninstall, разбирать и отправлять на исполнение строку, содержащуюся в параметре UninstallString.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:23, 06-09-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

za1 za1 вне форума Автор темы

Аватара для za1

Старожил


Сообщения: 225
Благодарности: 14

Профиль | Отправить PM | Цитировать


Цитата Iska:
Впрочем, первый способ ничем не лучше, и так же чреват возможными ошибками исполнения. »
Так может есть какой-нибудь стандартный более простой и верный способ?
Цитата Iska:
Тупо перебирать в реестре машинный и пользовательские разделы Software\Microsoft\Windows\CurrentVersion\Uninstall, разбирать и отправлять на исполнение строку, содержащуюся в параметре UninstallString. »
Посмотрел эти разделы, перебирать их я так понял нужно потому что некоторые программы ставятся в Programm Files, а другие в профиль пользователя? А что значит разбирать UninstallString, там ведь прописан путь к деинсталятору с параметрами, или есть нюансы?

Отправлено: 18:30, 06-09-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата za1:
Так может есть какой-нибудь стандартный более простой и верный способ? »
Да способ всё тот же, хоть с фильтрацией по -Filter, хоть с командлетом Where-Object. Просто надо либо проверять, что в коллекции возвращается хотя бы один объект (как это принято делать красиво и правильно — я не знаю, плохо умею работать с PowerShell), либо тупо перебирать все возвращённые объекты по ForEach-Object — из пустой коллекции до ForEach-Object просто не дойдёт ничего.

Цитата za1:
перебирать их я так понял нужно потому что некоторые программы ставятся в Programm Files, а другие в профиль пользователя? »
Ну, тут скорее наоборот — потому что приложения могут быть установлены либо в режиме «на машину» (оно же «для всех пользователей») — и именно потому обычно располагаются в %ProgramFiles%, либо в режиме «на пользователя» (конкретного) — и потому, как правило, располагаются в профиле пользователя; причина — режим установки, а месторасположение — следствие выбранного режима установки приложения.

Цитата za1:
А что значит разбирать UninstallString, там ведь прописан путь к деинсталятору с параметрами, или есть нюансы? »
Скажем, может просто не быть параметра UninstallString как такового . Тип параметра UninstallString может быть как REG_SZ, так и REG_EXPAND_SZ (и тут Вам смотреть — доверить расрытие возможных переменных окружения системе, запрашивая параметр типа REG_EXPAND_SZ как REG_SZ, либо делать это самому). Где-то уже есть кавычки:
Код: Выделить весь код
"C:\Program Files\WinHTTrack\unins000.exe"
где-то — нет (но зато есть пробелы в пути и параметры):
Код: Выделить весь код
C:\Program Files\Windows Firewall Control\wfc.exe -uninstall
Вот я про что.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:23, 06-09-2018 | #4

za1 za1 вне форума Автор темы

Аватара для za1

Старожил


Сообщения: 225
Благодарности: 14

Профиль | Отправить PM | Цитировать


Ок, спасибо!

Отправлено: 22:38, 06-09-2018 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Удаление 1с

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Безвозратное удаление и удаление файлов не удаляемых штатными средствами. Михайло Хочу все знать 14 08-08-2017 20:46
CMD/BAT - [решено] Удаление файлов нулевого размера, а затем удаление пустых каталогов ilyadud Скриптовые языки администрирования Windows 5 25-08-2012 10:57
2008 R2 - [решено] Serv2008R2 + RemoteAPP+printer+1С 7.7 и 1С 8.2 Sermion Windows Server 2008/2008 R2 2 05-06-2012 12:20
CMD/BAT - Поиск слова в тексте, удаление строки, удаление 8 строк выше и 3 строк ниже Alk-13 Скриптовые языки администрирования Windows 0 10-02-2012 18:06
[решено] Программирование 1С и доработки конфигураций 1С Kerberos_2.0 Хочу все знать 4 26-02-2011 17:45




 
Переход