Передать учетные данные для вызова WMI в VBScript - PullRequest
6 голосов
/ 14 октября 2010

У меня есть VBScript внутри HTA, который получает статус ping от локального вызова WMI. У меня также есть функция для получения времени последней перезагрузки удаленного компьютера.

Function GetReboot(strComputer)
    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
    For Each objOS in colOperatingSystems
        dtmBootup = objOS.LastBootUpTime
        dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
        dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
        Wscript.Echo dtmSystemUptime
    Next
    GetReboot = dtmLastbootupTime
End Function

Это примерно то, что есть, очевидно, я объявляю переменные и у меня есть другая функция даты и т. Д.

Это работает, если я вызываю WMI "localhost", поскольку я являюсь локальным администратором. Однако, когда я выполняю вызов WMI к удаленному серверу, это работает, только если я вошел на локальный компьютер с учетной записью администратора AD.

Есть ли способ, с помощью которого я могу запросить у пользователя имя пользователя и пароль, а затем передать его вызову WMI, чтобы он работал как кто-либо, только с данными администратора?

Ответы [ 2 ]

7 голосов
/ 14 октября 2010

Похоже, что SWbemLocator.ConnectServer Метод позволяет указать имя пользователя и пароль при подключении к удаленным компьютерам. Похоже, что синтаксис, который вам нужно использовать, похож, вам просто нужно создать свой объект objWMIService по-другому:

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer("MachineName", "root\cimv2", "Username", "Password")

Дополнительная документация доступна, если вы ищете "WbemScripting.SWbemLocator" в Google

0 голосов
/ 28 августа 2012

Как администратор домена, вы сможете добавить дополнительное право на свою учетную запись, что позволит вам запускать процессы, как любой другой пользователь.Это право в AD называется «Разрешить доверять пользователю для делегирования».Это очень мощный.Это единственный законный способ запустить вашу задачу от имени другого пользователя.Смотрите эту ссылку, чтобы установить право:

http://support.microsoft.com/kb/932455

...