2010-10-14 9 views
6

mam VBScript wewnątrz HTA uzyskanie statusu ping z połączenia lokalnego WMI .. Mam też funkcję ostatni raz restart zdalnego komputera ..poświadczeń do WMI zadzwonić 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 

To jest z grubsza to, co jest, oczywiście deklaruję zmienne i mam inną funkcję daty itp.

Działa to, jeśli IMI WMI dzwoni "localhost", ponieważ jestem administratorem lokalnym .. jednak podczas wykonywania połączenia WMI do zdalny serwer działa tylko wtedy, gdy jestem zalogowany na moim komputerze lokalnym przy użyciu konta administratora AD.

Czy istnieje sposób, w jaki mogę poprosić użytkownika o podanie nazwy użytkownika i hasła, a następnie przekazać to do wywołania WMI, aby działał tak, jak każdy z danymi administratora?

Odpowiedz

7

Wygląda na to, że metoda SWbemLocator.ConnectServer umożliwia określenie nazwy użytkownika i hasła podczas łączenia się ze zdalnymi komputerami. Wygląda na to, składni, że trzeba użyć jest podobna, wystarczy utworzyć obiekt objWMIService inaczej:

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

Więcej dokumentacja jest dostępna, jeśli wyszukać „WbemScripting.SWbemLocator” w Google

+0

Hi Kragen, dziękuję za odpowiedź, jesteś w stanie powiedzieć mi, jeśli jego możliwości debugowania to? Zaimplementowałem to w moim kodzie i nie dostaję żadnych błędów .. jednak wciąż nie dostaję odpowiedzi i dlatego odmawia się dostępu. Jeśli uruchomię go, gdy jestem zalogowany jako konto administratora, działa dobrze ... – medoix

+0

@medoix - Jeśli uruchomisz z włączonym debugowaniem skryptów, powinieneś móc umieścić instrukcję 'Stop' z przodu swojej funkcji, aby wymusić punkt przerwania. – Justin

0

As administrator domeny, mógłbyś dodać dodatkowe prawo do swojego konta, które umożliwiłoby rozpoczęcie procesów jak każdy inny użytkownik. To prawo w AD jest nazywane "Zezwalaj użytkownikowi na zaufanie do delegowania". Jest niezwykle potężny. Jest to jedyny legalny sposób uruchomienia zadania jako inny użytkownik. Zobacz ten link, aby ustawić prawo:

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