En kort guide om Windows Management Instrumentation (WMI)

By rik

Windows Management Instrumentation (WMI) är grunden för hanteringsinformation och aktiviteter i Windows-baserade operativsystem.

WMI tillhandahåller även hanteringsdata till olika systemkomponenter och produkter, till exempel System Center Operations Manager (SCOM) eller Windows Remote Management.

Vad är Windows Management Instrumentation (WMI)?

WMI är en plattform som möjliggör hantering och övervakning av operativsystemet samt andra Microsoft-applikationer och tjänster på persondatorer, servrar och diverse nätverksenheter.

WMI erbjuder ett omfattande, skalbart och användarvänligt programmeringsgränssnitt som ger programmatisk tillgång till information och tjänster på datorer och nätverksenheter som hanteras av Microsoft.

Det används för att upptäcka och övervaka operativsystemet, tjänster, applikationer, register- och filsystemdata. Dessutom kan man använda det för att skapa och hantera skript och program för automatiserad administration av datorn.

WMI använder programmeringsspråket WQL (Windows Query Language) för att söka efter information och utföra operationer på operativsystem, datorer och enheter.

Det ger också tillgång till PowerShell, ett av de mest effektiva och flexibla administrationsverktygen för Windows, som möjliggör skapande av automatiseringsskript.

Ytterligare möjliggör WMI utveckling av anpassade applikationer som berikar hanteringen av Windows-system och applikationer med extra funktionalitet.

Användare som behöver övervaka sina maskiners tillstånd, genomföra grundläggande felsökning och samla in prestandadata kommer att uppskatta WMI:s praktiska nytta.

Vad är syftet med WMI?

WMI är värdefullt i företagsnätverk då det underlättar driften och hanteringen av nätverkskomponenter genom att leverera data till andra produkter för utökad förbättring och skalbarhet.

Det övergripande syftet med WMI är att erbjuda en enhetlig hanteringsupplevelse för alla aspekter av ett Windows-system, som till exempel:

  • Operativsystemets komponenter
  • Processer och trådar
  • Tjänster
  • Enheter
  • Drivrutiner
  • Applikationer
  • Användarkonton
  • Säkerhetsinställningar

Genom att använda WMI minskar man kostnader och tid relaterat till drift och utveckling av Windows-system. WMI möjliggör även övervakning av systemhändelser och insamling av prestandadata, som kan användas för att felsöka problem eller spåra trender över tid.

WMI används ofta för att automatisera administrativa uppgifter och få tillgång till data utan att behöva interagera direkt med operativsystemet. Därför är WMI ett utmärkt verktyg för administratörer och mjukvaruutvecklare som behöver automatisera tidskrävande processer.

Med WMI kan man övervaka allt från systemets prestanda till att hämta applikationsdata. Det ger utvecklare möjlighet att skapa smartare och mer intelligenta applikationer, samtidigt som det säkerställer att IT-administratörer kan utföra sina uppgifter med minimal ansträngning.

WMI är en referensimplementation för åtkomst av systeminformation och är ett centralt verktyg för hantering och övervakning av Windows-system. Det är en grundpelare för Azure Machine Learning och AzureML, och används av ett brett spektrum av produkter från tredje part.

Användning av WMI

Windows Management Instrumentation (WMI) är Microsofts implementation av Web-Based Enterprise Management (WBEM), ett branschinitiativ för att utveckla standardiserade tekniker för att komma åt information om företagsstyrning.

WMI representerar system, applikationer, nätverk, enheter och andra hanterade komponenter med hjälp av industristandarden Common Information Model (CIM). Distributed Management Task Force (DMTF) skapar och underhåller CIM.

WMI:s design är flexibel och stöder en bred uppsättning administrations- och hanteringsuppgifter. Dess utbyggbara arkitektur tillåter tillverkare att skapa nya WMI-leverantörer för stöd av nya enheter, applikationer och annan teknisk utveckling.

Andra användningsområden inkluderar:

  • Omfattande hantering av Windows operativsystem och Microsofts nätverksenheter och tjänster.
  • Möjlighet att ansluta till fjärrdatorer för att få tillgång till WMI-data.
  • Upptäcka systeminformation, som aktiva program och konfigurerade tjänster.
  • Hämta information om hårdvaruspecifikationer och utföra åtgärder som att stänga av eller starta om systemet.
  • Starta applikationer, starta, stoppa och konfigurera tjänster samt komma åt data.
  • Utvecklare av administrationsapplikationer kan använda detta API för att skapa skript i Visual Basic eller Windows Scripting Host (WSH).

WMI-arkitektur

WMI (Windows Management Instrumentation) är en Microsoft-teknik som introducerades i Windows 2000. Den ger programmerare möjlighet att skapa hanteringsprogram som fungerar med alla system som stöder WMI.

Låt oss granska WMI:s arkitektur och terminologi.

Flödet i WMI-arkitekturen börjar med ett *objekt*, en komponent som en hårddisk, nätverkskort, operativsystem eller tjänst, som är ett hanterat objekt (vilket kan hanteras via WMI). WMI-infrastrukturen tar emot data från ett objekt genom en *leverantör*. Leverantören tillhandahåller och tar emot meddelanden från WMI och vidarebefordrar dem till objektet.

En WMI-leverantör består av en DLL och en MOF-fil (Managed Object Format) som övervakar händelser och data från objektet. WMI kategoriserar leverantörer efter den funktionalitet som erbjuds via deras gränssnitt.

Windows har många inbyggda WMI-leverantörer, som till exempel: en Active Directory-leverantör, en Boot Configuration Data (BCD) WMI-leverantör, en Distributed File System (DFS)-leverantör, en Event Log-leverantör, en Hyper-V WMI-leverantör, en Win32-leverantör, en Registry-leverantör och en SNMP-leverantör.

WMI-infrastrukturen är en komponent i Microsoft Windows-operativsystemet, kallad WMI-tjänsten (winmgmt). WMI Core och WMI Repository är de två huvuddelarna av WMI-infrastrukturen.

WMI-förrådet är en hierarkisk datalagring ordnad via WMI-namnområden, ofta kallad Common Information Model (CIM). WMI-tjänsten skapar ett antal namnområden vid systemstart, inklusive root default, rootcimv2 och root-prenumeration.

Tjänsten skapar även en standarduppsättning klassdefinitioner, som innefattar systemklasserna Win32 och WMI. Ytterligare WMI-leverantörer kan skapa andra WMI-namnområden, och varje namnområde innehåller flera WMI-objekt.

WMI-tjänsten fungerar som en länk mellan leverantörerna, hanteringsapplikationerna och WMI-förrådet. Endast statisk data om objekt lagras i förrådet, till exempel klasser som definieras av leverantörer. WMI hämtar mest data dynamiskt från leverantören när en klient efterfrågar det.

En WMI-konsument är en hanteringsapplikation eller ett skript som kommunicerar med WMI-infrastrukturen. Genom att använda COM API för WMI eller Scripting API för WMI kan ett hanteringsprogram ställa frågor, specificera data, köra leverantörsmetoder och prenumerera på händelser.

WMI skapar ett standardiserat gränssnitt för att hämta hanteringsdata både fjärrstyrt och lokalt. Detta enhetliga gränssnitt abstraherar från operativsystemets applikationsprogrammeringsgränssnitt (API). Detta möjliggör för appar och skript att samla in hanteringsdata utan att behöva känna till operativsystemets API.

Hur kör man en WMI-fråga?

En viktig aspekt av WMI-plattformens mångsidighet är förmågan att göra frågor i dess arkiv för att erhålla detaljer om klass-, instans- eller schemadata. Dessa data är kopplade till inventeringen av lokala och fjärrsystem, operativsystem, programvara och andra administrativa aktiviteter.

Typer av frågor

I huvudsak används två typer av frågor för att hämta information från WMI-förrådet:

Synkron fråga: En synkron fråga håller kontroll över din applikationsfunktion under hela frågan. Den är enklare än ett asynkront anrop eftersom det bara kräver ett gränssnittsanrop. Dock kan den frysa din applikation vid stora sökningar eller nätverksbaserade förfrågningar.

Asynkron fråga: En asynkron fråga är att föredra när system- eller nätverkshastigheten påverkas av en stor mängd data.

WQL (WMI Query Language)

WMI Query Language är en vanlig metod för att fråga WMI.

SQL (Structured Query Language) används i databasmiljöer medan WQL används i WMI. Båda har en liknande syntaxstruktur.

De grundläggande satserna i WQL som används för att starta en fråga är Select, From och Where.

En typisk WMI-fråga börjar med att välja alla egenskaper från en WMI-klass med kommandot ”Select”. Asterisken (*) används för att välja alla egenskaper från en WMI-klass. Nyckelordet ”From” kan användas för att specificera vilken WMI-klass som ska efterfrågas efter att egenskaperna (en eller flera, eller alla) har valts. Se en SQL-fusklista för den exakta syntaxen.

WQL kan köras via WMI Tester (wbemtest.exe), som installeras som standard med Windows operativsystem. WMI-frågor kan även köras via Windows PowerShell, VBScript och C.

Typer av WQL-frågor

WQL-frågor används för att få tre olika typer av information.

Objektfrågor: Dessa frågor ger information om Windows systemresurser.

Händelsefrågor: Används för att spåra ändringar i händelseloggar, processinitiering, tjänsters status, datortillgänglighet eller mängden ledigt diskutrymme, bland annat.

Schemafrågor: Ger information om strukturen i WMI-schemat.

Kör en fråga

Låt oss titta på hur man kör en objektfråga.

Följande metod visar hur man kontrollerar WIN_32-processer på ett lokalt system.

Verktyget WMI Tester startas via kommandoraden genom att skriva in wbemtest.exe.

Då dyker följande fönster upp:

För att ansluta till WMI-namnområdet som innehåller klassen du vill fråga (RootCimv2 i de flesta fall), klicka på fliken Connect.

För att köra frågan, klicka på fliken ”Fråga” som visas nedan:

Ange sedan den fråga du vill använda. Låt oss till exempel hämta alla processer som körs på det lokala systemet genom att köra:

select * From Win32_process

Efter att ha klickat på appliceringsfliken visas följande resultat:

Ovanstående GUI-baserade körning kan även utföras via kommandotolken med PowerShell:

I PowerShell-plattformen används följande kod för att få listan över alla win_32-processer:

Get-WmiObject -Class Win32_Process

För att se alla PowerShell-frågeparametrar, besök Microsoft PowerShell Management sidan.

För att köra samma fråga i VBScript och C, Microsofts dokumentationssida ger en fullständig genomgång.

En annan metod för att fråga WMI-förrådet är genom WMIC-kommandot:

  • Öppna CMD från en kommandotolk.
  • Skriv WMIC och tryck på enter för att starta programmet.
  • Kommandotolken ändras då till wmic:rootcli>

Administratörer kan köra WMI-frågor från denna prompt.

För att till exempel ladda CPU-information för ett lokalt system, kommer kommandot att vara:

wmic:rootcli> WMIC CPU

Resultaten/informationen visas i kommandotolken.

AddressWidth  Architecture  AssetTag                Availability  Caption                                 Characteristics  ConfigManagerErrorCode  ConfigManagerUserConfig  CpuStatus  CreationClassName  CurrentClockSpeed  CurrentVoltage  DataWidth  Description                             DeviceID  ErrorCleared  ErrorDescription  ExtClock  Family  InstallDate  L2CacheSize  L2CacheSpeed  L3CacheSize  L3CacheSpeed  LastErrorCode  Level  LoadPercentage  Manufacturer  MaxClockSpeed  Name                                      NumberOfCores  NumberOfEnabledCore  NumberOfLogicalProcessors  OtherFamilyDescription  PartNumber              PNPDeviceID  PowerManagementCapabilities  PowerManagementSupported  ProcessorId       ProcessorType  Revision  Role  SecondLevelAddressTranslationExtensions  SerialNumber            SocketDesignation  Status  StatusInfo  Stepping  SystemCreationClassName  SystemName  ThreadCount  UniqueId  UpgradeMethod  Version  VirtualizationFirmwareEnabled  VMMonitorModeExtensions  VoltageCaps
64            9             To Be Filled By O.E.M.  3             Intel64 Family 6 Model 142 Stepping 10  252                                                               1          Win32_Processor    1801               7               64         Intel64 Family 6 Model 142 Stepping 10  CPU0                                      100       205                  1024                       6144         0                            6      31              GenuineIntel  1801           Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz  4              4                    8                                                  To Be Filled By O.E.M.                                            FALSE                     BFEBFBFF000806EA  3                        CPU   TRUE                                     To Be Filled By O.E.M.  U3E1               OK      3                     Win32_ComputerSystem     RENEE-HP     8                      51                      FALSE                          TRUE

För mer information om WMIC Alias och verb, besök Microsoft wmic.

Vanliga frågor om WMI

Vilka portar används i WMI?

Portarna som används är 49152 och 65535. Distributed Component Object Model (DCOM), som WMI baseras på, använder en slumpmässigt vald TCP-port för anslutningar mellan intervallet 49152 och 65535 som standard.

Är WMI utfasad?

WMI stöds fortfarande. Från och med Windows 10, version 21H1 och den halvårsvisa kanalversionen av Windows Server 21H1, stöds inte längre WMI-kommandoradsprogrammet (WMIC).

Vad är WMI-övervakningsverktyg?

Det finns många tillgängliga verktyg för att övervaka WMI. Några av de populäraste är: SolarWinds WMI Monitor med Server och Application Monitor, Paessler WMI Service Sensor med PRTG, Nagios XI, Sapien WMI Explorer. Gratis verktyg inkluderar WMI Explorer, Adrem Free WMI Tools.

Hur man felsöker WMI-problem?

Fel som kan uppstå vid försök att komma åt lokala WMI-data eller fjärrdata i en applikation eller ett skript, varierar från saknade klasser till åtkomstöverträdelser. Se Microsoft WMI felsökningsguide för lösningar på sådana fel.

Slutsats

Windows Management Instrumentation är ett kraftfullt verktyg som kan användas för att hantera ett brett spektrum av Windows-systemrelaterade funktioner. Trots att det kan verka skrämmande till en början, kan WMI vara ett mycket användbart verktyg för alla som arbetar med Windows-system.