使用 WMI 委派
當您在從遠端系統取得資料的本機系統上執行腳本時,WMI 會將您的認證提供給遠端系統上資料的提供者。 這只需要 模擬的模擬層級,因為只需要一個網路躍點。 不過,如果腳本連線到遠端系統上的 WMI,並嘗試在額外的遠端系統上開啟記錄檔,則除非模擬層級為 Delegate,否則腳本會失敗。 任何涉及多個網路躍點的作業都需要委派模擬層級。 如需 WMI 中 DCOM 安全性的詳細資訊,請參閱 設定用戶端應用程式進程安全性。 如需兩部電腦之間單一網路躍點連線的詳細資訊,請參閱 連線到遠端電腦上的 WMI。
若要使用委派透過另一部電腦連線到電腦
在網域控制站上啟用 Active Directory (Active Directory 消費者和電腦主控台系統管理工作) 中的委派。 遠端系統上的帳戶必須標示為 [信任委派] ,而且本機系統上的帳戶不得標示為 「 帳戶」是敏感性,而且無法委派。 本機系統、遠端系統和網域控制站必須是相同網域或受信任網域的成員。
注意 使用委派是安全性風險,因為它可讓直接控制外部的進程能夠使用您的認證。
以下列方式修改您的程式碼,以指出您想要使用委派。
-
PowerShell
-
將 WMI Cmdlet 上的 -Impersonation 參數設定為 Delegate。
-
VBScript
-
在對SWbemLocator.ConnectServer的呼叫中,將impersonationLevel參數設定為Delegate或Moniker字串中的Delegate。 您也可以在 SWbemSecurity物件中設定模擬。
-
C++
-
將模擬層級參數設定為呼叫CoInitializeSecurity或CoSetProxyBlanket中的RPC_C_IMP_LEVEL_DELEGATE。 如需何時進行這些呼叫的詳細資訊,請參閱 初始化 WMI 應用程式的 COM。
若要在 C++ 中將用戶端身分識別傳遞至遠端 COM 伺服器,請在 對 CoSetProxyBlanket的呼叫中設定遮蔽。 如需詳細資訊,請參閱 Cloaking。
-
範例
下列程式碼範例示範將模擬設定為 Delegate的 Moniker 字串。 請注意,授權單位必須設定為 Kerberos。
set objWMIServices = Getobject("winmgmts:{impersonationLevel=Delegate,authority=kerberos:MyDomain\Computer_B}!\\ComputerB\Root\CIMv2")
下列程式碼範例示範如何使用SWbemLocator.ConnectServer,將模擬設定為[委派 (4) 。
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(Computer_B, _
"Root\CIMv2", _
AdminAccount, _
MyPassword, _
"kerberos:Domain\Computer_B")
objWMIService.Security_.ImpersonationLevel = 4
相關主題
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應