Delen via


Verbinding maken met WMI op een externe computer

WMI kan worden gebruikt voor het beheren en openen van WMI-gegevens op externe computers. Externe verbindingen in WMI worden beïnvloed door de Windows Firewall-- en DCOM-instellingen. Gebruikersaccountbeheer (UAC) kan ook wijzigingen in bepaalde instellingen vereisen. Zodra uw instellingen juist zijn, is de aanroep naar een extern systeem echter vergelijkbaar met een lokale WMI-aanroep. U kunt er echter voor kiezen om het complexer te maken door verschillende referenties, alternatieve verificatieprotocollen en andere beveiligingsfuncties te gebruiken.

Een computer configureren voor een externe verbinding

Voordat u toegang hebt tot een extern systeem met WMI, moet u mogelijk enkele beveiligingsinstellingen controleren om te bevestigen dat u toegang hebt. Specifiek:

  • Windows bevat een aantal beveiligingsfuncties die de toegang tot scripts op externe systemen kunnen blokkeren. Daarom moet u mogelijk de Active Directory- en Windows Firewall-instellingen van uw systeem wijzigen voordat u een WMI-aanroep doet. Zie Een externe WMI-verbinding instellen en Problemen met een externe WMI-verbinding oplossenvoor meer informatie.

  • De juiste DCOM-instellingen moeten zijn ingeschakeld voor een externe verbinding om te kunnen werken. Als u DCOM-instellingen wijzigt, kunnen gebruikers met lage rechten toegang krijgen tot een computer voor een externe verbinding. Zie Een externe WMI-verbinding beveiligenvoor meer informatie.

Daarnaast kan het zijn dat er bepaalde omstandigheden zijn waarin u WMI wilt uitvoeren via een vaste poort. Hiervoor moet u ook uw instellingen wijzigen. Zie Een vaste poort instellen voor WMI-voor meer informatie.

Verbinding maken met een externe computer

Het hart van het verbinden met een extern systeem met WMI bestaat uit het controleren of u over de juiste machtigingen beschikt om toegang te krijgen tot het systeem en dat uw verbinding correct is geconfigureerd. Zodra u deze twee elementen hebt, is de verbinding zelf relatief eenvoudig. Als u bijvoorbeeld uw standaardbeveiligingsreferenties gebruikt, hebt u toegang tot WMI op een extern systeem met behulp van de volgende code:

verbinding maken met WMI op afstand met PowerShell

Gebruik de parameter -ComputerName die gebruikelijk zijn voor de meeste WMI-cmdlets, zoals Get-WmiObject.

$strComputer = "Computer_B"
$colSettings = Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer

verbinding maken met WMI op afstand met VBScript-

Gebruik een moniker die de naam van het externe systeem in de aanroep bevat voor GetObject.

strComputer = "Computer_B"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")

verbinding maken met WMI op afstand met C#

Gebruik voor de huidige versie van de beheerde WMI-interface (Microsoft.Management.Infrastructure) het CimSession--object om een verbinding met een externe host weer te geven.

using Microsoft.Management.Infrastructure;
...
string Namespace = @"root\cimv2";
string OSQuery = "SELECT * FROM Win32_OperatingSystem";
CimSession mySession = CimSession.Create("Computer_B");
IEnumerable<CimInstance> queryInstance = mySession.QueryInstances(Namespace, "WQL", OSQuery);

verbinding maken met WMI op afstand met C#

Gebruik voor de v1-versie van de beheerde WMI-interface (System.Management) het ManagementScope-object om een verbinding met een externe host aan te geven.

using System.Management;
...
ManagementScope scope = new ManagementScope("\\\\Computer_B\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

voorbeeld: WMI-gegevens ophalen van een externe computer (C++)

Gebruik de methode IWbemLocator::ConnectServer om de naam van de externe computer op te geven in de parameter strNetworkResourceResource.

    hres = pLoc->ConnectServer(
        _bstr_t(L"\\\\COMPUTER_B\\root\\cimv2"),
        _bstr_t(useToken?NULL:pszName),    // User name
        _bstr_t(useToken?NULL:pszPwd),     // User password
        NULL,                              // Locale             
        NULL,                              // Security flags
        _bstr_t(useNTLM?NULL:pszAuthority),// Authority        
        NULL,                              // Context object 
        &pSvc                              // IWbemServices proxy
        );

De vorige codevoorbeelden zijn waarschijnlijk de meest eenvoudige externe verbinding die u met WMI kunt uitvoeren. In de voorbeelden wordt uitgegaan van het volgende:

  • U bent een beheerder op de externe computer. Vanwege gebruikersaccountbeheer, moet het account op het externe systeem een domeinaccount in de groep Administrators zijn. Zie Gebruikersaccountbeheer en WMI voor meer informatie.
  • Het wachtwoord op uw huidige lokale computer is niet leeg. Dit is in feite een Windows-beveiligingsvereiste die u met een wachtwoord op uw systeem moet hebben aangemeld.
  • Zowel uw lokale als externe computers bevinden zich binnen hetzelfde domein. Als u domeingrenzen moet overschrijden, moet u aanvullende informatie opgeven of een iets ander programmeermodel gebruiken.
  • U gebruikt uw eigen account voor toegang tot de externe computer. Als u toegang probeert te krijgen tot een ander account, moet u aanvullende referenties opgeven. (Houd er rekening mee dat het lokaal proberen om toegang te krijgen tot WMI met andere referenties dan uw huidige account niet is toegestaan.)
  • Op beide computers wordt IPv6 uitgevoerd. WMI ondersteunt verbindingen met computers met IPv6. Zowel uw lokale computer als Computer_B moeten echter IPv6 uitvoeren. Op beide computers kan ook IPv4 worden uitgevoerd. Zie IPv6- en IPv4-ondersteuning in WMIvoor meer informatie.
  • Uw script hoeft niet te delegeren; met andere woorden, het hoeft geen toegang tot extra externe computers via de doelcomputer te krijgen. Zie Delegeren met WMI-voor meer informatie.
  • U probeert een specifieke aanroep te maken in plaats van een extern proces te maken. Zie Processen op afstand maken met WMI-voor meer informatie.

Met deze beperkingen in gedachten, is een externe WMI-aanroep vergelijkbaar met een lokale WMI-aanroep. Het enige verschil is dat u de naam van het externe systeem moet opgeven. U kunt er echter voor kiezen om veel van deze functies te wijzigen: het gebruik van verschillende referenties of het routeren van uw oproep via een computer van derden of het openen van een ander domein.