将凭据传递给VBS中的WMI调用

med*_*oix 6 vbscript wmi credentials hta

我在HTA中有VBScript从本地WMI调用获取ping状态..我还有一个函数来获取远程pc的最后一次重启时间..

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
Run Code Online (Sandbox Code Playgroud)

这大致就是它,显然我声明了变量,并有另一个日期函数等.

如果我WMI调用"localhost",因为我是本地管理员,这是有效的.但是当对远程服务器进行WMI调用时,这只有在我使用AD管理员帐户登录到本地计算机时才有效.

有没有办法可以提示用户输入用户名和密码,然后将其传递给WMI调用,以便它可以像管理员详细信息一样工作?

Jus*_*tin 7

看起来SWbemLocator.ConnectServer方法允许您在连接到远程计算机时指定用户名和密码.看起来您需要使用的语法类似,您只需要以objWMIService不同方式创建对象:

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer("MachineName", "root\cimv2", "Username", "Password")
Run Code Online (Sandbox Code Playgroud)

如果您在Google上搜索"WbemScripting.SWbemLocator",则可以获得更多文档