将凭据传递给wmi call in vbscript
-
30-09-2019 - |
题
我在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
这大致就是这样,显然我声明了变量并具有另一个日期函数等。
如果我是本地管理员,则可以将“ Localhost”称为“ Localhost”。但是,当对远程服务器进行WMI调用时,只有在我使用广告管理员帐户登录到本地计算机时才有效。
有什么方法可以提示用户获取用户名和密码,然后将其传递给WMI调用,以便像任何人一样使用管理员详细信息?
解决方案
看起来像 swbemlocator.connectServer 方法允许您在连接到远程计算机时指定用户名和密码。看起来您需要使用的语法相似,您只需要创建自己的语法 objWMIService
对象的不同:
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer("MachineName", "root\cimv2", "Username", "Password")
如果您在Google上搜索“ wbemscripting.swbemlocator”,可以提供更多文档
其他提示
作为域管理员,您将能够在帐户中添加额外的权利,这将使您能够以任何其他用户的身份开始流程。广告中的此权利称为“允许用户被信任委托”。它非常强大。这是作为另一个用户运行任务的唯一合法方式。查看此链接以设置正确:
不隶属于 StackOverflow