我在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
这大致就是它,显然我声明了变量并有另一个日期函数等。
如果我WMI调用“localhost”,这是有效的,因为我是本地管理员..但是当对远程服务器进行WMI调用时,这只有在我使用AD管理员帐户登录到本地计算机时才有效。
有没有办法可以提示用户输入用户名和密码,然后将其传递给WMI调用,以便它可以像管理员详细信息一样工作?
答案 0 :(得分:7)
看起来SWbemLocator.ConnectServer方法允许您在连接到远程计算机时指定用户名和密码。看起来您需要使用的语法类似,您只需要以不同方式创建objWMIService
对象:
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer("MachineName", "root\cimv2", "Username", "Password")
如果您在Google上搜索“WbemScripting.SWbemLocator”,可以使用更多文档
答案 1 :(得分:0)
作为域管理员,您可以为帐户添加额外权限,这样您就可以像其他任何用户一样启动流程。 AD中的此权限称为“允许用户信任委派”。它非常强大。这是以另一个用户身份运行任务的唯一合法方式。请参阅此链接以设置右侧: