Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаленное удаление MSI-пакетов  (Прочитано 12756 раз)
0 Пользователей и 1 Гость смотрят эту тему.
GCRaistlin
Новенький

ru
Offline Offline

« : 24-01-2012 23:51 » 

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

ru
Offline Offline

« Ответ #1 : 26-01-2012 04:31 » 

я не гуру, но учитывая это
Код:
sMachine = InputBox("Computer name?")
и
Код:
Set oService = oLocator.ConnectServer(sMachine, "root\cimv2", _
    sAdminUser, sPassword)

и если добавить  и добавлять везде при вызове  winmgmts
Код:
" & sMachine & "\root\cimv2"

к примеру
Код:
For Each oProduct in GetObject( _
 "winmgmts:{impersonationLevel=impersonate,(Debug)}!\\" & sMachine & "root\cimv2"_
 ).InstancesOf("win32_Product")

то, вроде, должно помочь

ЗЫЖ у меня не получилось по причине: ошибка 462, а разбираться лень
Записан

I Have Nine Lives You Have One Only
THINK!
GCRaistlin
Новенький

ru
Offline Offline

« Ответ #2 : 28-01-2012 21:06 » new

У меня ошибка
Цитата
Uninstall.vbs(20, 1) Microsoft VBScript runtime error: The remote server machine does not exist
 or is unavailable: 'GetObject'
на такой строке:
Код:
For Each oProduct in GetObject( _
 "winmgmts:{impersonationLevel=impersonate}!\\" & sMachine & "\root\cimv2" _
 ).InstancesOf("win32_Product")
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines