Dela via


WMI-provider

WMIProvider-exemplet visar hur du samlar in data från WCF-tjänster (Windows Communication Foundation) vid körning med hjälp av WMI-providern (Windows Management Instrumentation) som är inbyggd i WCF. Det här exemplet visar också hur du lägger till ett användardefinierat WMI-objekt i en tjänst. Exemplet aktiverar WMI-providern för komma igång och visar hur du samlar in data från ICalculator tjänsten vid körning.

WMI är Microsofts implementering av wbem-standarden (Web-Based Enterprise Management). Mer information om WMI SDK finns i Windows Management Instrumentation. WBEM är en branschstandard för hur program exponerar hanteringsinstrumentation för externa hanteringsverktyg.

WCF implementerar en WMI-provider, en komponent som exponerar instrumentation vid körning via ett WBEM-kompatibelt gränssnitt. Hanteringsverktyg kan ansluta till tjänsterna via gränssnittet vid körning. WCF exponerar attribut för tjänster som adresser, bindningar, beteenden och lyssnare.

Den inbyggda WMI-providern aktiveras i programmets konfigurationsfil. Detta görs via wmiProviderEnabled attributet för diagnostiken><< i avsnittet system.serviceModel>, som du ser i följande exempelkonfiguration:

<system.serviceModel>
    ...
    <diagnostics wmiProviderEnabled="true" />
    ...
</system.serviceModel>

Den här konfigurationsposten exponerar ett WMI-gränssnitt. Hanteringsprogram kan nu ansluta via det här gränssnittet och få åtkomst till programmets hanteringsinstrumentation.

Anpassat WMI-objekt

Genom att lägga till WMI-objekt i en tjänst kan du visa användardefinierad information tillsammans med den inbyggda WMI-providerinformationen. Detta uppnås genom att publicera schemat för tjänsten till WMI med hjälp av Installutil.exe-programmet. Instruktioner för att åstadkomma detta, tillsammans med mer information finns i installationsanvisningarna i slutet av ämnet.

Åtkomst till WMI-information

WMI-data kan nås på många olika sätt. Microsoft tillhandahåller WMI-API:er för skript, Visual Basic-program, C++-program och .NET Framework. Mer information finns i Använda WMI.

Det här exemplet använder två Java-skript: ett för att räkna upp tjänster som körs på datorn tillsammans med några av deras egenskaper och det andra för att visa användardefinierade WMI-data. Skriptet öppnar en anslutning till WMI-providern, parsar data och visar insamlade data.

Starta exemplet för att skapa en instans av en WCF-tjänst som körs. När tjänsten körs kör du varje Java-skript med hjälp av följande kommando i kommandotolken:

cscript EnumerateServices.js

Skriptet kommer åt instrumentationen i tjänsten och genererar följande utdata:

Microsoft (R) Windows Script Host Version 5.6
Copyright © Microsoft Corporation 1996-2001. All rights reserved.

1 service(s) found.
|-PID:           5776
|-DistinguishedName:  CalculatorService@http://localhost/ServiceModelSamples/service.svc
|-Endpoints:     1 endpoints
  |-CalculatorService.ICalculator@http://localhost/ServiceModelSamples/service.svc
    |-Address:                        http://localhost/ServiceModelSamples/service.svc
    |-CounterInstanceName:
    |-AddressHeaders:                 0
    |-ContractType:                   Contract.Name='ICalculator'
    |-BindingElements:                4 bindings
      |-BindingElements[0]
        |-Type:                       TransactionFlowBindingElement
      |-BindingElements[1]
        |-Type:                       SymmetricSecurityBindingElement
      |-BindingElements[2]
        |-Type:                       TextMessageEncodingBindingElement
        |-MaxReadPoolSize:            64
        |-MaxWritePoolSize:           16
      |-BindingElements[3]
        |-Type:                       HttpTransportBindingElement
        |-ManualAddressing:           false
        |-MaxBufferSize:              65536
        |-AllowCookies:               false
        |-AuthenticationScheme:       Anonymous
        |-BypassProxyOnLocal:         false
        |-HostNameComparisonMode:     StrongWildcard
        |-ProxyAddress:               null
        |-ProxyAuthenticationScheme:  Anonymous
        |-Realm:
        |-TransferMode:               Buffered
        |-UseDefaultWebProxy:         true
|-Behaviors:     5 behaviors
      |-Behavior[0]
      |-Type:                       ServiceBehaviorAttribute
        |-AddressFilterMode:               Exact
        |-AutomaticSessionShutdown:        true
        |-ConcurrencyMode:                 Single
        |-IncludeExceptionDetailInFaults:  false
        |-InstanceContextMode:             PerSession
        |-TransactionIsolationLevel:       Unspecified
        |-TransactionTimeout:              null
        |-ValidateMustUnderstand:          true
      |-Behavior[1]
      |-Type:                       AspNetCompatibilityRequirementsAttribute
      |-Behavior[2]
      |-Type:                       ServiceDebugBehavior
      |-Behavior[3]
      |-Type:                       ServiceAuthorizationBehavior
      |-Behavior[4]
      |-Type:                       Behavior

Kör sedan det andra Java-skriptet för att visa användardefinierade WMI-data:

cscript EnumerateCustomObjects.js

Skriptet kommer åt den användardefinierade instrumentationen som finns i tjänsterna och genererar följande utdata:

1 WMIObject(s) found.
|-PID:           30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId:    3839
|-WMIInfo:       User Defined WMI Information.

Utdata visar att det finns en enda tjänst som körs på datorn. Tjänsten exponerar en slutpunkt som implementerar ICalculator kontraktet. Inställningarna för beteendet och bindningen som implementeras av slutpunkten visas som summan av enskilda element i meddelandestacken.

WMI är inte begränsat till att exponera hanteringsinstrumentationen för WCF-infrastrukturen. Programmet kan exponera sina egna domänspecifika dataobjekt via samma mekanism. WMI är en enhetlig mekanism för inspektion och kontroll av en webbtjänst.

Så här konfigurerar du, skapar och kör exemplet

  1. Kontrollera att du har utfört engångskonfigurationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. Publicera tjänstschemat till WMI genom att köra InstallUtil.exe (standardplatserna för InstallUtil.exe är "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") på service.dll-filen i värdkatalogen. Det här steget behöver bara utföras när ändringar har gjorts i service.dll filen.

  4. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.

    Kommentar

    Om du har installerat WCF efter installationen av ASP.NET kan du behöva köra %WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe " -r -x för att ge ASPNET-kontot behörighet att publicera WMI-objekt.

  5. Visa data från exemplet som visas via WMI med hjälp av kommandona: cscript EnumerateServices.js eller cscript EnumerateCustomObjects.js.

Se även