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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаленное удаление MSI-пакетов

Ответить
Настройки темы
VBS/WSH/JS - Удаленное удаление MSI-пакетов

Аватара для Raistlin

Ветеран


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


Конфигурация

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


Наткнулся на такой скрипт:
Код: Выделить весь код
'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
По замыслу автора, он должен удалять msi-пакеты удаленно. Удаляет-то, может, он и удаленно, а вот список формирует из локально установленных пакетов. Не подскажет ли кто, что в нем не так?

-------
Magically yours
Raistlin


Отправлено: 19:14, 25-01-2012

 


Moderator


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

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


Raistlin, пример есть в этой теме.

Отправлено: 19:53, 25-01-2012 | #2



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

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


Ветеран


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

Профиль | Отправить 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


Аватара для Raistlin

Ветеран


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

Профиль | Отправить 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")
На ней же и спотыкаемся:
Цитата:
Uninstall.vbs(20, 1) Microsoft VBScript runtime error: The remote server machine does not exist
or is unavailable: 'GetObject'
Iska, ваш скрипт работает, но, к сожалению, адаптировать его к "моему" ума не хватает.

-------
Magically yours
Raistlin


Отправлено: 01:01, 29-01-2012 | #4


Ветеран


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

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


Цитата Raistlin:
Iska, ваш скрипт работает, но, к сожалению, адаптировать его к "моему" ума не хватает. »
Опишите подробно, что Вам потребно.

Отправлено: 17:20, 29-01-2012 | #5


Аватара для Raistlin

Ветеран


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

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


Нужно получить список msi-пакетов, установленных на удаленной машине, и удалить выбранные (или выбранный).

-------
Magically yours
Raistlin


Отправлено: 17:22, 29-01-2012 | #6


Ветеран


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

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


Raistlin, проще говоря, Вы хотите интерфейс.

Зачем?

Отправлено: 21:33, 29-01-2012 | #7


Аватара для Raistlin

Ветеран


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

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


Допустим, пришел я в контору, где есть домен, но все приложения ставились вручную, без использования групповых политик. Хочу сделать через GP. Без предварительного удаления msi-пакетов установка через GP завершится неудачно (по крайней мере, для некоторых пакетов). При этом версии той же Java везде разные, поэтому жестко прошивать названия пакетов в скрипт бессмысленно.

-------
Magically yours
Raistlin


Отправлено: 21:39, 29-01-2012 | #8


Ветеран


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

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


Raistlin, раз Вы знаете, что будете удалять (хотя бы частичное имя), можно проще, наподобие:
Код: Выделить весь код
wmic.exe /node:@"c:\MachineList.txt" Product where "name like '%%XML Notepad%%'" call UnInstall
либо разбор «MachineList.txt» и асинхронный вызов «wmic.exe» посредством «start» для каждой машины из «MachineList.txt».

Отправлено: 22:02, 29-01-2012 | #9


Аватара для Raistlin

Ветеран


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

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


Да, я такое уже накопал и даже смог воспроизвести. Правда, не скажу, что это проще .

-------
Magically yours
Raistlin


Отправлено: 22:10, 29-01-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаленное удаление MSI-пакетов

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Переупаковка 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




 
Переход