共用方式為


使用 WMI 委派

當您在從遠端系統取得資料的本機系統上執行腳本時,WMI 會將認證提供給遠端系統上的數據提供者。 這只需要一個模擬層級Impersonate,因為只需進行一次網路跳轉。 不過,如果腳本連線到遠端系統上的 WMI,並嘗試在其他遠端系統上開啟記錄檔,則除非模擬層級為 Delegate,否則腳本會失敗。 任何牽涉到多個網路躍點的作業都需要委派 模擬層級。 如需 WMI 中 DCOM 安全性的詳細資訊,請參閱 設定用戶端應用程式進程安全性。 如需有關兩部計算機之間單一網路跳的連線的詳細資訊,請參閱在遠端電腦上連線到 WMI

透過委派功能,使用另一部電腦連線到目標電腦

  1. 在域控制器上啟用 Active Directory 中的委派(位於控制台中的 Active Directory 使用者和電腦控制台系統管理工作)。 遠端系統上的帳戶必須標示為 信任委派,且本機系統上的帳戶不得標示為 敏感性帳戶,無法委派。 本機系統、遠端系統和域控制器必須是相同網域或受信任網域的成員。

    注意 使用委派是安全性風險,因為它可讓直接控制外部的程式能夠使用您的認證。

  2. 以下列方式修改程序代碼,以指出您想要使用委派。

    PowerShell

    WMI Cmdlet 上的 -Impersonation 參數設定為 Delegate

    VBScript

    impersonationLevel 參數設定為 Delegate,可以在呼叫 SWbemLocator.ConnectServer 時進行,或者在 moniker 字串中使用 Delegate。 您也可以在SWbemSecurity 物件中設定模擬。

    C++

    將呼叫CoInitializeSecurityCoSetProxyBlanket中的模擬層級參數設為RPC_C_IMP_LEVEL_DELEGATE。 如需有關何時進行這些呼叫的詳細資訊,請參閱 COM 初始化於 WMI 應用程式

    若要將用戶端身分識別傳遞至C++中的遠端 COM 伺服器,請在 CoSetProxyBlanket 的呼叫中設定遮蓋 如需詳細資訊,請參閱 遮蓋

範例

下列程式代碼範例示範將模擬設定為 Delegate 的 Moniker 字串。 請注意,驗證方式必須設定為 Kerberos。

set objWMIServices = Getobject("winmgmts:{impersonationLevel=Delegate,authority=kerberos:MyDomain\Computer_B}!\\ComputerB\Root\CIMv2")

下列程式代碼範例示範如何使用 SWbemLocator.ConnectServer 將模擬設定為 Delegate(值為 4)。

Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(Computer_B, _
                                             "Root\CIMv2", _
                                             AdminAccount, _
                                             MyPassword, _
                                             "kerberos:Domain\Computer_B")
objWMIService.Security_.ImpersonationLevel = 4

保護遠端 WMI 連線

使用 WMI 從遠端建立進程