6

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

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 调用,这样它就可以像任何人一样使用管理员详细信息?

4

2 回答 2

7

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

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

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

于 2010-10-14T04:31:15.683 回答
0

作为域管理员,您将能够为您的帐户添加额外的权限,这将允许您以任何其他用户的身份启动进程。AD 中的此权利称为“允许用户受信任以进行委派”。它非常强大。这是以其他用户身份运行任务的唯一合法方式。请参阅此链接以设置权利:

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

于 2012-08-27T23:27:00.887 回答