Dela via


Delegera med WMI

När du kör ett skript på ett lokalt system som hämtar data från ett fjärrsystem, tillhandahåller WMI dina autentiseringsuppgifter till providern av data i fjärrsystemet. Detta kräver endast en personifieringsnivå på Personifiera, eftersom bara ett nätverkshopp behövs. Men om skriptet ansluter till WMI på fjärrsystemet och försöker öppna en loggfil på ytterligare ett fjärrsystem misslyckas skriptet om inte personifieringsnivån är Delegera. Nivån för delegerad personifiering krävs för alla operationer som innebär mer än ett hopp mellan nätverk. Mer information om DCOM-säkerhet i WMI finns i Ange klientprogramprocesssäkerhet. Mer information om en förbindelse via ett nätverkshopp mellan två datorer finns i Ansluta till WMI på en fjärrdator.

Om du vill använda delegering för att ansluta till en dator via en annan dator

  1. Aktivera delegering i Active Directory (Active Directory-användare och -datorer i KontrollpanelenAdministrativa verktyg) på domänkontrollantrullen. Kontot på fjärrsystemet måste markeras som Betrodd för delegering och kontot i det lokala systemet får inte markeras som Kontot är känsligt och kan inte delegeras. det lokala systemet, fjärrsystemet och domänkontrollanten måste vara medlemmar i samma domän eller i betrodda domäner.

    Obs Att använda delegering är en säkerhetsrisk eftersom det ger processer utanför din direkta kontroll möjlighet att använda dina autentiseringsuppgifter.

  2. Ändra koden på följande sätt för att ange att du vill använda delegering.

    PowerShell

    Ange parametern -Impersonation på WMI-cmdlet till Delegate.

    VBScript

    Ställ in parametern impersonationLevel till Delegate i anropet till SWbemLocator.ConnectServer eller till Delegatei strängen moniker. Du kan också ange personifieringen i ett SWbemSecurity-objekt.

    C++

    Ange parametern personifieringsnivå till RPC_C_IMP_LEVEL_DELEGATE i anropet till CoInitializeSecurity eller CoSetProxyBlanket. Mer information om när du ska göra dessa anrop finns i Initiera COM för ett WMI-program.

    Om du vill skicka klientidentiteten till fjärranslutna COM-servrar i C++, anger du döljning i anropet till CoSetProxyBlanket. Mer information finns i Cloaking.

Exempel

I följande kodexempel visas en monikersträng som anger personifieringen till Delegate. Tänk på att behörigheten måste vara inställd på Kerberos.

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

I följande kodexempel visas hur du anger personifiering till Delegate (värdet 4) med hjälp av SWbemLocator.ConnectServer.

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

Skydda en WMI-fjärranslutning

Att skapa processer via fjärranslutning med WMI