将凭据传递到VBScript中的WMI调用
我在HTA中有VBScript,从本地WMI调用获取ping状态。。我还有一个功能可以获取远程pc的上次重新启动时间将凭据传递到VBScript中的WMI调用,vbscript,wmi,credentials,hta,Vbscript,Wmi,Credentials,Hta,我在HTA中有VBScript,从本地WMI调用获取ping状态。。我还有一个功能可以获取远程pc的上次重新启动时间 Function GetReboot(strComputer) Set objWMIService = GetObject _ ("winmgmts:\\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery _
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 admin帐户登录到本地计算机时,此功能才起作用
是否有一种方法可以提示用户输入用户名和密码,然后将其传递给WMI调用,使其与任何具有管理员详细信息的人一样工作?该方法似乎允许您在连接到远程计算机时指定用户名和密码。看起来您需要使用的语法类似,您只需要以不同的方式创建objWMIService
对象:
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer("MachineName", "root\cimv2", "Username", "Password")
如果您以域管理员的身份在Google上搜索“WbemScripting.SWbemLocator”,您将能够向您的帐户添加额外的权限,这将允许您以任何其他用户的身份启动流程,则可以获得更多文档。AD中的此权限称为“允许信任用户进行授权”。它非常强大。这是以其他用户身份运行任务的唯一合法方式。请参阅此链接以设置右侧:
你好,Kragen,谢谢你的回复,你能告诉我是否可以调试这个吗?我已经在我的代码中实现了这一点,并且没有出现任何错误。。但是我仍然没有得到回复,因此访问被拒绝。如果我在以管理员帐户登录时运行它,它工作正常…@medoix-如果您在启用脚本调试的情况下运行,那么您应该能够在函数前面放置一个
Stop
语句以强制设置断点。