2010-10-14 5 views
6

У меня есть VBScript внутри ОМТ получает статус пинга из локального вызова WMI .. У меня также есть функция, чтобы получить последний раз перезагрузки удаленного ПК ..передавать учетные данные WMI вызова в VBScript

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, чтобы он работал как кто-либо только с данными администратора?

ответ

7

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

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

Более документация доступна, если вы ищете «WbemScripting.SWbemLocator» на Google

+0

Привет Kragen, спасибо за ответ, вы в состоянии сказать мне, если его можно отладить это? я внедрил это в свой код, и я не получаю никаких ошибок. Однако я до сих пор не получил ответа и отказался от этого доступа. Если я запустил его, пока я вошел в систему как учетная запись администратора, он отлично работает ... – medoix

+0

@medoix - Если вы запускаете с включенной отладкой скрипта, тогда вы должны иметь возможность поставить оператор «Стоп» в передней части своей функции, чтобы заставить точка останова. – Justin

0

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

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

Смежные вопросы