|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаленное удаление MSI-пакетов |
|
||||
|
|
VBS/WSH/JS - Удаленное удаление MSI-пакетов
|
|
Ветеран Сообщения: 573 |
Наткнулся на такой скрипт:
'Uninstalls a remote MSI package.
'http://vbscriptwmi.uw.hu/ch31lev1sec4.html
'get remote computer name
Dim sMachine
sMachine = InputBox("Computer name?")
'get admin credentials
Dim sAdminUser, sPassword
sAdminUser = InputBox("Enter the admin user name.")
sPassword = InputBox("Enter the users password. ")
'get a WMI Locator
Dim oLocator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
'connect to remote machine
Dim oService
Set oService = oLocator.ConnectServer(sMachine, "root\cimv2", _
sAdminUser, sPassword)
'get a list of installed products
Dim sMsg, sName
For Each oProduct in GetObject( _
"winmgmts:{impersonationLevel=impersonate,(Debug)}" _
).InstancesOf("win32_Product")
'is this the product we want?
sMsg = "Product: " & vbCrLf
sMsg = sMsg & oProduct.Name
sMsg = sMsg & vbCrLf & "Uninstall this product?"
If MsgBox(sMsg, 4) = 6 Then
sName = oProduct.Name
Exit For
End If
Next
'Get the named package
For each oProduct in GetObject( _
"winmgmts:{impersonationLevel=impersonate}" _
).ExecQuery _
("Select * from Win32_Product where Name='" & sName & "'")
'uninstall it
oProduct.Uninstall
'done!
MsgBox "Uninstalled " & sName
Next
|
|
|
------- Отправлено: 19:14, 25-01-2012 |
|
Сообщения: 53589
|
Профиль | Отправить PM | Цитировать Raistlin, пример есть в этой теме.
|
|
Отправлено: 19:53, 25-01-2012 | #2 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Raistlin:
Raistlin, проверить в данный конкретный момент нет возможности, но вот Вам примерная болванка кода: Option Explicit
Dim strProductName
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx
strProductName = "Google Toolbar for Internet Explorer"
strComputer = "MyServer"
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
objSWbemServicesEx.Security_.Privileges.AddAsString "SeDebugPrivilege"
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery( _
"SELECT * FROM Win32_Product " & _
"WHERE Name = '" & strProductName & "'")
For Each objSWbemObjectEx In collSWbemObjectSet
objSWbemObjectEx.Uninstall
Next
Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
|
|
|
Отправлено: 02:07, 26-01-2012 | #3 |
|
Ветеран Сообщения: 573
|
Профиль | Отправить PM | Цитировать Petya V4sechkin, не могу сообразить, как реализовать поиск пакетов на удаленной машине. Изменил код в соответствии с имеющимся в той теме:
'Uninstalls a remote MSI package.
'http://vbscriptwmi.uw.hu/ch31lev1sec4.html
'get remote computer name
Dim sMachine
sMachine = InputBox("Computer name?")
'get admin credentials
Dim sAdminUser, sPassword
sAdminUser = InputBox("Enter the admin user name.")
sPassword = InputBox("Enter the users password. ")
'get a WMI Locator
Dim oLocator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
'connect to remote machine
Dim oService
Set oService = oLocator.ConnectServer(sMachine, "root\cimv2", _
sAdminUser, sPassword)
'get a list of installed products
Dim sMsg, sName
For Each oProduct in GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" & sMachine & "\root\cimv2" _
).InstancesOf("win32_Product")
'is this the product we want?
sMsg = "Product: " & vbCrLf
sMsg = sMsg & oProduct.Name
sMsg = sMsg & vbCrLf & "Uninstall this product?"
If MsgBox(sMsg, 4) = 6 Then
sName = oProduct.Name
Exit For
End If
Next
'Get the named package
For each oProduct in GetObject( _
"winmgmts:{impersonationLevel=impersonate}" _
).ExecQuery _
("Select * from Win32_Product where Name='" & sName & "'")
'uninstall it
oProduct.Uninstall
'done!
MsgBox "Uninstalled " & sName
Next
For Each oProduct in GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" & sMachine & "\root\cimv2" _
).InstancesOf("win32_Product")
Цитата:
|
|
|
------- Отправлено: 01:01, 29-01-2012 | #4 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Raistlin:
|
||
|
Отправлено: 17:20, 29-01-2012 | #5 |
|
Ветеран Сообщения: 573
|
Профиль | Отправить PM | Цитировать Нужно получить список msi-пакетов, установленных на удаленной машине, и удалить выбранные (или выбранный).
|
|
------- Отправлено: 17:22, 29-01-2012 | #6 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Raistlin, проще говоря, Вы хотите интерфейс.
Зачем? |
|
Отправлено: 21:33, 29-01-2012 | #7 |
|
Ветеран Сообщения: 573
|
Профиль | Отправить PM | Цитировать Допустим, пришел я в контору, где есть домен, но все приложения ставились вручную, без использования групповых политик. Хочу сделать через GP. Без предварительного удаления msi-пакетов установка через GP завершится неудачно (по крайней мере, для некоторых пакетов). При этом версии той же Java везде разные, поэтому жестко прошивать названия пакетов в скрипт бессмысленно.
|
|
------- Отправлено: 21:39, 29-01-2012 | #8 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Raistlin, раз Вы знаете, что будете удалять (хотя бы частичное имя), можно проще, наподобие:
либо разбор «MachineList.txt» и асинхронный вызов «wmic.exe» посредством «start» для каждой машины из «MachineList.txt». |
|
Отправлено: 22:02, 29-01-2012 | #9 |
|
Ветеран Сообщения: 573
|
Профиль | Отправить PM | Цитировать Да, я такое уже накопал и даже смог воспроизвести. Правда, не скажу, что это проще
. |
|
------- Отправлено: 22:10, 29-01-2012 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| [решено] Переупаковка MSI/MSP пакетов | Virtuez | Автоматическая установка приложений | 28 | 14-03-2024 08:38 | |
| Установка и переустановка msi-пакетов | pypyrin | Автоматическая установка приложений | 0 | 22-10-2010 14:21 | |
| [решено] Автоматическая установка MSI пакетов в домене. | Ultrix | Microsoft Windows NT/2000/2003 | 4 | 27-01-2010 13:44 | |
| Удаление пакетов с помощью rpm | 1Space | Программное обеспечение Linux и FreeBSD | 4 | 01-02-2007 10:11 | |
| Создание пакетов MSI . | Jhakal | Автоматическая установка приложений | 3 | 21-11-2006 06:20 | |
|