Delen via


Windows Remote Management en WMI

Windows Remote Management kan worden gebruikt om gegevens op te halen die beschikbaar worden gesteld door Windows Management Instrumentation (WMI- en MI-). U kunt WMI-gegevens verkrijgen met scripts of toepassingen die gebruikmaken van de WinRM Scripting-API of via het opdrachtregelprogramma Winrm.

WinRM ondersteunt de meeste bekende WMI-klassen en -bewerkingen, waaronder ingesloten objecten. WinRM kan gebruikmaken van WMI voor het verzamelen van gegevens over resources of voor het beheren van resources op een Windows-besturingssysteem. Dit betekent dat u gegevens over objecten zoals schijven, netwerkadapters, services of processen in uw onderneming kunt verkrijgen via de bestaande set van WMI-klassen. U kunt ook toegang krijgen tot de hardwaregegevens die beschikbaar zijn via de standaard-WMI-IPMI-provider.

Een WMI-resource identificeren

U kunt verwijzen naar een WMI-klasse als een resource in WinRM en in het WS-Management protocol: een type beheerde entiteit, zoals een service of een schijf.

Een WMI-klasse of -methode wordt geïdentificeerd door een URI-, net zoals elke andere resource het WS-Management-protocol gebruikt. De URI kan een WMI-resource (klasse), een WMI-actie (methode) opgeven of een specifiek exemplaar van een klasse identificeren in berichten verzonden via een netwerk. Zie Resource-URI'svoor meer informatie.

Het URI-voorvoegsel voor WMI-klassen samenstellen

Het URI-voorvoegsel bevat een vast onderdeel en de WMI-naamruimte. Het URI-voorvoegsel in Windows Server dat het vaste deel van het voorvoegsel bevat, is bijvoorbeeld: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>. Hierdoor kan het URI-voorvoegsel worden gegenereerd voor elke WMI-naamruimte. Als u bijvoorbeeld toegang wilt krijgen tot de root\default WMI-naamruimte, gebruikt u het volgende URI-voorvoegsel: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/.

De meeste WMI-klassen voor beheer bevinden zich in de root\cimv2 naamruimte. Als u toegang wilt krijgen tot klassen en exemplaren in root\cimv2 naamruimte, gebruikt u het URI-voorvoegsel: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/. Zie Resource-URI'svoor meer informatie.

Een volledige URI genereren voor WMI-klassen

De URI die u opgeeft aan de Winrm opdrachtregelprogramma of aan een script, bestaat uit het voorvoegsel plus de resourcespecificatie.

In de volgende procedure wordt beschreven hoe u een resource-URI genereert om een WMI-klasse op te halen of om te gebruiken in een opsommingsbewerking.

Een resource-URI genereren voor een WMI-klasse

  1. Begin met het voorvoegsel dat aangeeft dat het WS-Management protocolschema moet worden gebruikt.

    https://schemas.microsoft.com/wbem/wsman/1

    Het resource-URI-voorvoegsel voor WMI-klassen is altijd hetzelfde. Zie URI-voorvoegselsvoor meer informatie.

  2. Voeg de WMI-naamruimte toe aan het voorvoegsel.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. Voeg de klassenaam toe.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service

  4. Als u de waarde van een eigenschap wilt instellen of een specifieke methode wilt aanroepen, voegt u de vereiste sleutelwaarde of -waarden voor de klasse toe.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt

    Als u de sleutelwaarde leeg laat, wijzigt u de oorspronkelijke eigenschapswaarde niet.

    Notitie

    Als u de sleutelwaarde leeg laat, wordt de eigenschapswaarde ingesteld op NULL-.

     

Een WMI-resource zoeken met WinRM

U kunt WMI-gegevens verkrijgen via het opdrachtregelprogramma, Winrmof via een Visual Basic-script dat gebruikmaakt van de WinRM Scripting-API. U gebruikt geen WMI-pad om een resource te zoeken. In plaats daarvan converteert u de WMI-naamruimte en -hiërarchie naar een URI-.

De WinRM-URI voor een WMI-klasse bevat twee delen: het URI-voorvoegsel en de klasse waartoe u toegang wilt krijgen.

De volgende URI kan bijvoorbeeld worden opgegeven voor de Session.Enumerate methode om alle services op een computer weer te geven. Het URI-voorvoegsel wordt http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/en de klasse is Win32_Service.

strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"

Vermeld in WMI de gegevens voor alle exemplaren van een resource of klasse op verschillende manieren:

  • Een query voor alle exemplaren van die resource.

    Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")

  • Een aanroep van SWbemServices.InstancesOf of SWbemObject.Instances_.

    Set colServices = InstancesOf("Win32_Service")

In WinRM is er één manier om alle exemplaren van een resource weer te geven: Session.Enumerate.

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )

Een specifiek exemplaar van een WMI-resource zoeken

In WMI kunt u een bepaald exemplaar van een klasse aanwijzen door waarden op te geven voor de sleuteleigenschappen of door een query uit te voeren op een exemplaar dat overeenkomt met een lijst met eigenschapswaarden. Sleuteleigenschappen hebben de WMI-Sleutelkwalificatie.

U kunt op verschillende manieren een specifiek exemplaar van een klasse verkrijgen:

  • Een aanroep van Session.Enumerate met het filter en dialect parameters om een query te maken.

    RemoteComputer = "servername.domain.com"
    strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
    strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'"
    Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
    
  • Een aanroep naar SWbemServices.Get. Voor Session.Getmoet u een of meer specifieke sleutelwaarden opgeven, voorafgegaan door een vraagteken (?).

    De indeling van de URI voor een specifiek exemplaar is http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value.

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
    

    Een WMI-klasse kan meer dan één sleutel hebben. Sleutelnaam-waardeparen worden gescheiden door een +-teken. In dat geval is de notatie: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2.

    De WinRM-syntaxis voor het verkrijgen van een singleton WMI-object verschilt van WMI. Een singleton is een WMI-klasse die is gedefinieerd, zodat slechts één exemplaar is toegestaan. Win32_CurrentTime of Win32_WMISetting zijn voorbeelden van een WMI singleton-klasse.

    De WMI-syntaxis voor singletons wordt weergegeven in het volgende VBScript-codevoorbeeld.

    Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
    

    In het volgende voorbeeld ziet u de WinRM-singletonsyntaxis die geen @gebruikt.

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • Een selector toevoegen aan een ResourceLocator- of IWSManResourceLocator--object.

    In het volgende VBScript-codevoorbeeld ziet u hoe u een selector gebruikt om een specifiek exemplaar van Win32_Processorop te halen.

    strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"
    Set objWsman = CreateObject("Wsman.Automation")
    Set Session = objWsman.CreateSession
    Set Locator = objWsman.CreateResourceLocator(strUri)
    Locator.AddSelector "DeviceID", "CPU0"
    

Over Windows Remote Management

URI-voorvoegsels

resource-URI's

Scripting in Windows Remote Management