Stručný průvodce o Windows Management Instrumentation (WMI)

Windows Management Instrumentation (WMI) představuje systémový rámec pro správu dat a operací v operačních systémech postavených na platformě Windows.

WMI rovněž poskytuje klíčová data pro správu různým systémovým komponentám a externím produktům, jako jsou například SCOM (System Center Operations Manager) nebo Windows Remote Management.

Co je Windows Management Instrumentation (WMI)?

WMI je platforma určená ke správě a monitorování operačního systému a dalších aplikací a služeb od společnosti Microsoft. Je využívána na osobních počítačích, serverech a dalších zařízeních v síti.

Poskytuje komplexní, rozšiřitelné a snadno použitelné rozhraní pro programování, které umožňuje softwarový přístup k informacím a službám na počítačích spravovaných Microsoftem a dalšími síťovými zařízeními.

Jeho použití zahrnuje detekci a sledování operačního systému, systémových služeb a aplikací, stejně jako monitorování dat z registru a souborového systému. WMI se rovněž uplatňuje při tvorbě a správě skriptů a programů, které automatizují administrativní úlohy a celkovou správu počítače.

Pro dotazování na informace a provádění operací na operačním systému, počítačích a zařízeních využívá WMI specifický programovací jazyk WQL (Windows Query Language).

Dále poskytuje přístup k PowerShellu, jednomu z nejvýkonnějších a nejflexibilnějších nástrojů pro správu v prostředí Windows, který je klíčový pro vytváření automatizačních skriptů.

WMI také umožňuje vytváření vlastních aplikací, které mohou rozšířit možnosti správy a administrace systémů a aplikací Windows.

Uživatelé, kteří potřebují mít přehled o stavu svých počítačů, provádět základní diagnostiku a sbírat data o výkonu, shledají WMI velmi užitečným.

K jakému účelu slouží WMI?

WMI má velký význam v podnikových sítích založených na Windows. Zjednodušuje provoz a správu podnikové sítě, protože poskytuje data pro další produkty, které tak mohou být lépe využity a škálovány.

Hlavním cílem WMI je vytvořit jednotný systém pro správu všech aspektů Windows, včetně:

  • Komponent operačního systému
  • Procesů a vláken
  • Služeb
  • Zařízení
  • Ovladačů
  • Aplikací
  • Uživatelských účtů
  • Bezpečnostních nastavení

Díky WMI se snižují náklady i čas potřebný pro operace a vývoj systémů Windows. Navíc umožňuje sledování systémových událostí a shromažďování dat o výkonu. Tato data jsou neocenitelná pro řešení problémů a sledování trendů v čase.

WMI se nejčastěji používá k automatizaci administrativních úkolů a k získávání přístupu k datům bez přímé interakce s operačním systémem. Je tak ideální volbou pro administrátory a softwarové vývojáře, kteří chtějí automatizovat časově náročné procesy.

S WMI je možné monitorovat výkon systému, získávat aplikační data a další. Umožňuje vývojářům vytvářet inteligentnější aplikace a zároveň usnadňuje práci IT administrátorům.

WMI slouží jako referenční implementace pro přístup k systémovým informacím a je zásadním nástrojem pro správu a monitorování systémů Windows. Je to základní kámen pro Azure Machine Learning a AzureML a je využíván v mnoha produktech třetích stran.

Využití WMI

Windows Management Instrumentation (WMI) je produkt společnosti Microsoft, který implementuje standard Web-Based Enterprise Management (WBEM). WBEM je průmyslová iniciativa zaměřená na vývoj standardizovaných technologií pro přístup k informacím o správě podniků.

WMI reprezentuje systémy, aplikace, sítě, zařízení a další spravované komponenty za použití průmyslového standardu Common Information Model (CIM). CIM je vytvářen a udržován organizací Distributed Management Task Force (DMTF).

WMI je navržen s ohledem na flexibilitu a podporuje širokou škálu administrativních a manažerských úloh. Jeho architektura je flexibilní a rozšiřitelná, což výrobcům umožňuje vytvářet nové poskytovatele WMI pro podporu nových zařízení, aplikací a dalších vylepšení.

Další způsoby využití zahrnují:

  • Komplexní správu operačního systému Windows a síťových zařízení a služeb společnosti Microsoft.
  • Možnost připojení ke vzdáleným počítačům za účelem přístupu k datům WMI.
  • Získávání informací o systému, například které programy jsou spuštěné a jaké služby jsou nastavené.
  • Získávání informací o hardwarových specifikacích a provádění akcí, jako je vypnutí nebo restartování systému.
  • Spouštění aplikací, spouštění, zastavování a konfigurace služeb, stejně jako přístup k datům.
  • Vývojáři aplikací pro správu mohou využít WMI API pro vytváření skriptů ve Visual Basic nebo Windows Scripting Host (WSH).

Architektura WMI

WMI (Windows Management Instrumentation) je technologie od Microsoftu, která byla poprvé představena v systému Windows 2000. Umožňuje programátorům vytvářet aplikace pro správu, které fungují s jakýmkoli systémem podporujícím WMI.

Nyní se podívejme na architekturu a terminologii WMI.

Základem architektury WMI jsou spravované objekty. Komponenta, jako je pevný disk, síťová karta, operační systém nebo služba, je spravovaný objekt, který lze spravovat prostřednictvím WMI. Infrastruktura WMI získává data z těchto objektů prostřednictvím poskytovatele. Poskytovatel zpracovává zprávy a komunikaci mezi WMI a spravovaným objektem.

Poskytovatel WMI zahrnuje knihovnu DLL a soubor MOF (Managed Object Format), který monitoruje události a data z objektů. WMI kategorizuje poskytovatele podle funkčnosti poskytované rozhraním poskytovatele.

V operačním systému Windows je mnoho vestavěných poskytovatelů WMI, včetně poskytovatele služby Active Directory, poskytovatele WMI spouštěcích konfiguračních dat (BCD), poskytovatele distribuovaného souborového systému (DFS), poskytovatele protokolu událostí, poskytovatele Hyper-V WMI, poskytovatele Win32, poskytovatele registru a poskytovatele SNMP.

Infrastruktura WMI je součástí operačního systému Microsoft Windows a je známá jako služba WMI (winmgmt). Tato infrastruktura se skládá ze dvou hlavních částí: WMI Core a WMI Repository.

Úložiště WMI je hierarchická databáze organizovaná pomocí jmenných prostorů WMI, často označovaných jako Common Information Model (CIM). Při spuštění systému služba WMI vytvoří několik jmenných prostorů, včetně výchozích root, rootcimv2 a root/subscription.
Kromě toho služba vytvoří výchozí sadu definic tříd, které zahrnují systémové třídy Win32 a WMI. Další jmenné prostory WMI mohou být vytvářeny poskytovateli WMI a každý jmenný prostor obsahuje několik WMI objektů.

Služba WMI funguje jako prostředník mezi poskytovateli, aplikacemi pro správu a úložištěm WMI. V úložišti jsou uložena pouze statická data o objektech, jako jsou třídy definované poskytovateli. Většina dat je získávána dynamicky od poskytovatele, když o to klient požádá.

Zákazníkem WMI je aplikace nebo skript pro správu, který komunikuje s infrastrukturou WMI. Prostřednictvím rozhraní COM API for WMI nebo Scripting API for WMI může program pro správu dotazovat, získávat data, spouštět metody poskytovatele a přihlašovat se k odběru událostí.

WMI vytváří standardizované rozhraní pro získávání dat správy, jak lokálně, tak i vzdáleně. Toto jednotné rozhraní abstrahuje od aplikačních programovacích rozhraní (API) operačního systému. Aplikace a skripty tak mohou získávat data správy bez nutnosti znát rozhraní API operačního systému.

Jak spustit dotaz WMI?

Flexibilita platformy WMI se odráží ve schopnosti dotazovat se na její úložiště a získávat tak informace o datech tříd, instancích nebo schématech. Tato data souvisejí s inventářem lokálních i vzdálených systémů, operačních systémů, softwaru a dalších administrativních aspektů.

Typy dotazů

Obecně existují dva základní typy dotazů používaných pro získávání informací z úložiště WMI:

Synchronní dotaz: Při tomto typu dotazu je aplikace zodpovědná za řízení operace po celou dobu trvání dotazu. Jedná se o jednodušší přístup, který zahrnuje jediné volání rozhraní, ale v případě rozsáhlých nebo síťových dotazů může způsobit zamrznutí aplikace.

Asynchronní dotaz: Pokud dotazování na velkou skupinu dat může negativně ovlivnit rychlost systému nebo sítě, je vhodnější použít asynchronní dotaz.

WQL (dotazovací jazyk WMI)

Jedním z běžných způsobů dotazování na WMI je jazyk WQL.

V databázovém prostředí se používá SQL (Structured Query Language), zatímco WMI používá WQL. Oba jazyky mají podobnou strukturu syntaxe.

Základní příkazy WQL, které se používají pro spuštění dotazu, jsou Select, From a Where.

Běžný dotaz WMI začíná výběrem všech vlastností z třídy WMI pomocí příkazu „Select“. Hvězdička („*“) se používá k výběru všech vlastností z dané třídy. Klíčové slovo „From“ se pak používá pro určení třídy, na kterou se dotaz směřuje. Přesnou syntaxi je možné ověřit v SQL cheatsheet.

WQL lze spustit pomocí nástroje WMI Tester (wbemtest.exe), který je standardně součástí operačního systému Windows. Dotazy WMI lze spouštět také prostřednictvím prostředí Windows PowerShell, VBScript a jazyka C.

Typy dotazů WQL

Dotazy WQL se používají pro získání tří typů informací:

Objektové dotazy: Slouží k získávání informací o systémových prostředcích Windows.

Dotazy událostí: Tyto dotazy se používají pro sledování změn v protokolech událostí, spouštění procesů, stavu služeb, dostupnosti počítačů nebo obsazenosti disku a dalších událostí.

Dotazy na schéma: Používají se pro získání podrobností o struktuře schématu WMI.

Spuštění dotazu

Nyní se podíváme na to, jak spustit objektový dotaz.

Následující postup popisuje, jak zkontrolovat procesy WIN_32 v místním systému.

Nástroj WMI Tester se spustí z příkazového řádku zadáním příkazu wbemtest.exe.

Zobrazí se následující okno.

Pro připojení k jmennému prostoru WMI, který obsahuje třídu, kterou chceme dotazovat (nejčastěji RootCimv2), klikneme na tlačítko „Připojit“.

Pro spuštění dotazu klikneme na tlačítko „Dotaz“, jak je uvedeno níže:

Poté zadáme dotaz, pro který chceme získat informace. Například pro načtení všech procesů běžících na lokálním systému zadáme:

select * From Win32_process

Po kliknutí na tlačítko „Použít“ se zobrazí následující výsledky:

Stejný dotaz, který byl proveden pomocí GUI, lze provést i z příkazového řádku pomocí PowerShell:

V PowerShell pro získání seznamu všech win_32 procesů se používá následující kód:

Get-WmiObject -Class Win32_Process

Pro získání všech parametrů dotazu PowerShell navštivte stránku Správa Microsoft PowerShell.

Pro spuštění tohoto dotazu v jazycích VBScript a C, dokumentační stránka Microsoftu poskytuje kompletní přehled.

Další metodou dotazování na úložiště WMI je příkaz WMIC:

  • Spusťte CMD z příkazového řádku.
  • Zadejte WMIC a stiskněte enter pro spuštění programu.
  • Příkazový řádek se změní na wmic:rootcli>.

Z této výzvy mohou správci spouštět dotazy WMI.

Například pro získání informací o procesoru místního systému bude příkaz vypadat takto:

wmic:rootcli> WMIC CPU

Výsledky/informace se zobrazí v příkazovém řádku.

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

Další informace o aliasech a slovesech WMIC najdete na stránce Microsoft wmic.

Často kladené otázky o WMI

Jaké porty používá WMI?

Používané porty jsou 49152 a 65535. Model DCOM (Distributed Component Object Model), na kterém je WMI postaveno, ve výchozím nastavení používá pro připojení náhodně vybraný port TCP z rozsahu 49152 až 65535.

Je WMI zastaralé?

WMI je stále podporováno. Od systému Windows 10 verze 21H1 a pololetního vydání kanálu 21H1 Windows Server již program příkazového řádku WMI (WMIC) není podporován.

Jaké jsou nástroje pro monitorování WMI?

Pro monitorování WMI je k dispozici mnoho nástrojů. Nejpopulárnější jsou:
SolarWinds WMI Monitor s monitorováním serverů a aplikací
Servisní senzor Paessler WMI s PRTG
Nagios XI
Sapien WMI Explorer
Bezplatné nástroje zahrnují WMI Explorer a Adrem Free WMI Tools.

Jak řešit problémy s WMI?

Při pokusu o přístup k lokálním nebo vzdáleným datům WMI v aplikaci nebo skriptu se mohou objevit chyby, od chybějících tříd až po problémy s přístupem. Řešení těchto chyb najdete v průvodci řešením problémů s WMI od Microsoftu.

Závěr

Windows Management Instrumentation je silný nástroj, který se dá využít k provádění mnoha různých operací souvisejících se systémem Windows. I když se může WMI na první pohled zdát komplikované, může být pro každého, kdo pracuje se systémy Windows, velmi užitečné.