2010-10-14 11 views
6

tengo VBScript dentro de una HTA conseguir el estado de ping de una llamada local de WMI .. también tengo una función para obtener la última vez que se reinicie el PC remoto ..Credenciales Pass a WMI de llamadas en 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 

Eso es más o menos lo que es, obviamente, declaro las variables y tengo otra función de fecha, etc.

Esto funciona si WMI llama "localhost" ya que soy un administrador local ... sin embargo cuando hago la llamada WMI a un servidor remoto esto solo funciona si estoy conectado a mi máquina local con una cuenta de administrador AD.

¿Hay alguna manera en que pueda pedirle al usuario un nombre de usuario y una contraseña y luego pasarlo a la llamada de WMI para que funcione solo con los detalles de administrador?

Respuesta

7

Parece que el método SWbemLocator.ConnectServer le permite especificar un nombre de usuario y contraseña cuando se conecta a computadoras remotas. Se parece a la sintaxis que necesita utilizar es similar, sólo tiene que crear el objeto de objWMIService diferente:

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

más documentación disponible si busca "WbemScripting.SWbemLocator" en Google

+0

Hola Kragen, gracias por la respuesta, ¿puede decirme si es posible depurar esto? Lo he implementado en mi código y no recibo errores ... sin embargo, aún no recibo una respuesta y, por lo tanto, el acceso es denegado. Si lo ejecuto mientras estoy conectado como la cuenta de administrador, funciona bien ... – medoix

+0

@medoix - Si se ejecuta con la depuración de scripts habilitada, entonces debería poder colocar una instrucción 'Stop' en el frente de su función para forzar un punto de quiebre – Justin

0

Como un administrador de dominio, podría agregar un derecho adicional a su cuenta, lo que le permitiría iniciar procesos como cualquier otro usuario. Este derecho en AD se llama "Permitir que el usuario sea confiable para la delegación". Es extremadamente poderoso. Es la única forma legítima de ejecutar su tarea como otro usuario. Ver este enlace para configurar la derecha:

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