2010-10-14 13 views
6

ho VBScript all'interno di un HTA ottenere lo stato ping da una chiamata WMI locale .. Ho anche una funzione per ottenere l'ultima volta che riavvio del pc remoto ..Credenziali pass per WMI Chiamata in 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 

Questo è grosso modo, ovviamente dichiaro le variabili e ho un'altra funzione di data, ecc.

Questo funziona se I WMI chiama "localhost" come sono un amministratore locale .. tuttavia quando si effettua la chiamata WMI ad un server remoto funziona solo se sono connesso al mio computer locale con un account amministratore AD.

C'è un modo per richiedere all'utente un nome utente e una password e quindi passarlo alla chiamata WMI in modo che funzioni come chiunque solo con i dettagli di amministrazione?

risposta

7

Sembra che il metodo SWbemLocator.ConnectServer consenta di specificare un nome utente e una password durante la connessione ai computer remoti. Sembra che la sintassi che è necessario utilizzare è simile, è sufficiente creare l'oggetto objWMIService in modo diverso:

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

Più documentazione è disponibile se si cerca "WbemScripting.SWbemLocator" su Google

+0

Hi Kragen, grazie per la risposta, si è in grado di dirmi se la sua possibile eseguire il debug di questo? ho implementato questo nel mio codice e non ottengo errori .. tuttavia non ottengo ancora una risposta e quindi l'accesso negato. Se lo eseguo mentre sono connesso come account amministratore funziona correttamente ... – medoix

+0

@medoix - Se esegui il debug degli script abilitato, dovresti riuscire a inserire un'istruzione 'Stop' nella parte anteriore della tua funzione per forzare un punto di interruzione. – Justin

0

Come un amministratore di dominio, potresti aggiungere un diritto aggiuntivo al tuo account, che ti consentirebbe di avviare processi come qualsiasi altro utente. Questo diritto in AD è chiamato "Consenti all'utente di essere sicuro per la delega". È estremamente potente. È l'unico modo legittimo per eseguire l'attività come un altro utente. Vedere questo link per impostare destra:

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