簡體   English   中英

將憑據傳遞給VBS中的WMI調用

[英]Pass Credentials to WMI Call in VBScript

我在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調用,以便它可以像管理員詳細信息一樣工作?

看起來SWbemLocator.ConnectServer方法允許您在連接到遠程計算機時指定用戶名和密碼。 看起來您需要使用的語法類似,您只需要以不同方式創建objWMIService對象:

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

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

作為域管理員,您可以為帳戶添加額外權限,這樣您就可以像其他任何用戶一樣啟動流程。 AD中的此權限稱為“允許用戶信任委派”。 它非常強大。 這是以另一個用戶身份運行任務的唯一合法方式。 請參閱此鏈接以設置正確的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM