27Aug

Geek School: Použitie PowerShell na získanie počítačových informácií

WMI a jeho novší brat CIM sa môžu používať na správu zariadení Windows vo vašom prostredí.Ale poznáte rozdiel medzi nimi? Pridajte sa k nám, keď sa pozrieme.

Uistite sa, že ste si prečítali predchádzajúce články v sérii:

  • Naučte sa automatizovať systém Windows s PowerShell
  • Naučiť sa používať kódy v PowerShell
  • Učenie ako používať objekty v PowerShell
  • Formátovanie, filtrovanie a porovnávanie učení v PowerShell
  • Naučte sa používať Remoting inPowerShell

A celý týždeň zostaňte naladení na zvyšok série.

Úvod

WMI znamená Windows Management Instrumentation. Slovo "Instrumentation" označuje skutočnosť, že služba WMI umožňuje získať informácie o vnútornom stave vášho počítača, podobne ako prístrojové dosky vo vašom aute dokážu získať a zobraziť informácie o stave vašich vnútorných komponentov.

WMI sa skladá z úložiska, ktorý obsahuje triedy, ktoré predstavujú komponenty, ktoré by mohli byť spravované vo vašom počítači. To znamená, že práve preto, že služba WMI má triedu Win32_Battery, neznamená to, že váš počítač obsahuje batériu. Tieto triedy možno potom získať informácie lokálne alebo dokonca v sieti pomocou jazyka dotazu, ktorý je veľmi podobný SQLu nazývanému WQL.Služba WMI je však známa ako veľmi nespoľahlivá, hlavne preto, že je založená na RPC( Remote Procedure Calls), ktoré robia nejaké bláznivé veci s portami, na ktoré sa rozhodnú komunikovať.

Počínajúc systémom Windows 8 a Serverom 2012 sa systém WMI postupne vyraďuje v prospech spoločného informačného modelu alebo CIM.Jediný rozdiel medzi službami WMI a CIM sú dopravné protokoly, ktoré používajú.Zatiaľ čo služba WMI vykonáva dopyty pomocou diaľkových procedúr, CIM používa protokol HTTP, ktorý sa javí ako obrovský rozdiel. Na backend stále rozprávajú s tým istým úložiskom informácií.

Použitie WMI

Najrýchlejší a najjednoduchší spôsob, ako preskúmať informácie, ktoré máte k dispozícii prostredníctvom služby WMI, je získať kópiu ľubovoľného bezplatného prehliadača objektov WMI.Toto sa nám páči. Po stiahnutí ho vypnite a budete mať grafické rozhranie na prehliadanie tried WMI.

obraz

Ak sa chcete dozvedieť niečo o konfigurácii disku počítača, stlačte kombináciu klávesov Ctrl + F, aby ste zobrazili vyhľadávacie pole a potom zadajte "logicaldisk" a stlačte enter.

obraz

Ihneď sa dostanete do triedy Win32_LogicalDisk.

obraz

V dolnej polovici aplikácie môžete vidieť, že máme dve inštancie triedy.

obraz

Akonáhle budeme mať triedu, ktorú hľadáme, dotazovanie z PowerShell je rovno dopredu.

Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"

obraz

Táto syntax som zatiaľ neviděl s ľuďmi, ktorí dávajú prednosť použitiu novej parametrizovanej syntaxe.

Get-WmiObject - Trieda Win32_LogicalDisk

obraz

Ak chcete získať informácie z iného počítača v sieti, jednoducho použite parameter ComputerName.

Get-WmiObject - Trieda Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrátor

obraz

Použitie CIM

Vzhľadom na to, že CIM je k dispozícii iba v systéme Windows 8 a Server 2012, posunom dopredu je to určite cesta.

Get-CimInstance -ClassName Win32_LogicalDisk

obraz

Pri použití funkcie Get-CimInstance je tiež dokončená karta pre parameter -ClassName, ktorá ukazuje, že v budúcnosti sa bude zameriavať úsilie spoločnosti Microsoft.

V skutočnosti bol systém WMI vyvinutý úplne oddeleným tímom v spoločnosti Microsoft, ale následne bol prevzatý osobami zodpovednými za PowerShell. Boli to tí, ktorí si všimli, že bude veľmi ťažké vyčistiť neporiadok WMI, ktorý zanechal. Pri pokuse o nápravu situácie sa pokúšajú sprístupniť nástroje WMI a CIM ďalším písaním obalových rutín, ktoré používajú WMI a CIM pod kapotou. Jediný spôsob, ako skontrolovať, či je cmdlet obal, je preskúmanie dokumentácie. Napríklad cmdlet Get-Hotfix je obal pre triedu Win32_QuickFixEngineering, ako je vidieť v dokumentácii.

obraz

To znamená, že môžete získať rýchle opravy na vzdialených počítačoch pomocou rutiny Get-HotFix namiesto WMI Query.

Get-HotFix -ComputerName localhost

obraz

Tak to tu máte. Len si pamätajte, že ak je určený cmdlet, budete ho vždy chcieť použiť, a potom by ste mali použiť CIM, ak by neexistoval cmdlet. Nakoniec, ak všetko ostatné zlyhá, alebo máte staršie stroje vo vašom prostredí, budete chcieť použiť WMI.To je všetko, čo mám pre tento čas. Uvidíme sa zajtra viac za zábavu PowerShell.