![](/img/trans.png)
[英]VBScript Remote WMI Call "Error:0 'Permission denied: 'GetObject"
[英]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中的此權限稱為“允許用戶信任委派”。 它非常強大。 這是以另一個用戶身份運行任務的唯一合法方式。 請參閱此鏈接以設置正確的:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.