代码之家  ›  专栏  ›  技术社区  ›  medoix

将凭据传递到vbscript中的WMI调用

  •  6
  • medoix  · 技术社区  · 15 年前

    我在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
    

    这大致就是它的样子,很明显我声明了变量,并有另一个日期函数等。

    如果我以本地管理员的身份调用“localhost”,这将起作用。但是,当对远程服务器进行WMI调用时,这仅在我使用AD管理员帐户登录到本地计算机时有效。

    有没有一种方法可以提示用户输入用户名和密码,然后将其传递给WMI调用,这样它就可以像任何人一样使用管理详细信息?

    2 回复  |  直到 13 年前
        1
  •  7
  •   Justin    15 年前

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

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

    如果您在Google上搜索“wbemscripting.swbemLocator”,则可以获得更多文档。

        2
  •  0
  •   Lizz    13 年前

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

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

    推荐文章