Domovská » jak » Geek School pomocí PowerShell získat informace o počítači

    Geek School pomocí PowerShell získat informace o počítači

    WMI a jeho novější bratr CIM mohou být použity ke správě strojů Windows ve vašem prostředí. Ale znáte rozdíl mezi nimi? Připojte se k nám, když se podíváme.

    Ujistěte se, že jste si přečetli předchozí články v sérii:

    • Naučte se automatizovat systém Windows pomocí nástroje PowerShell
    • Naučte se používat Cmdlets v PowerShell
    • Učení o používání objektů v prostředí PowerShell
    • Formátování učení, filtrování a porovnávání v prostředí PowerShell
    • Naučte se používat Remoting v PowerShell

    A zůstaňte v klidu po zbytek série celý týden.

    Úvod

    Služba WMI znamená Windows Management Instrumentation. Slovo "Instrumentation" odkazuje na skutečnost, že služba WMI vám umožňuje získat informace o vnitřním stavu vašeho počítače, stejně jako nástroje palubní desky v autě mohou vyhledávat a zobrazovat informace o stavu vnitřních součástí vašeho vozu.

    Služba WMI se skládá z úložiště, které obsahuje třídy, které představují součásti, které lze ve vaší jednotce spravovat. Tím myslíme jen proto, že služba WMI má třídu Win32_Battery, neznamená to, že váš počítač obsahuje baterii. Tyto třídy lze pak získat informace místně nebo dokonce přes síť pomocí jazyka dotazu velmi podobného SQL nazvaného WQL. WMI je však známo, že je velmi nespolehlivý, většinou kvůli tomu, že je založen na RPC (vzdálené volání procedur), které dělají některé šílené věci s porty, na které se rozhodnou komunikovat.

    Počínaje Windows 8 a Server 2012, WMI je postupně vyřazován ve prospěch Společného informačního modelu nebo CIM. Jediný rozdíl mezi WMI a CIM je dopravní protokoly, které používají. Zatímco WMI provádí dotazy pomocí vzdálených volání procedur, CIM používá protokol HTTP, který zřejmě dělá obrovský rozdíl. Na backendu stále mluví se stejným repozitářem informací.

    Pomocí služby WMI

    Nejrychlejší a nejjednodušší způsob, jak prozkoumat informace, které máte k dispozici prostřednictvím služby WMI, je získat kopii libovolného prohlížeče objektů WMI. To se nám líbí. Jakmile je stažena, vypálíte ji a budete mít grafické rozhraní pro procházení tříd WMI.

    Chcete-li se dozvědět něco o konfiguraci disku počítače, stisknutím kombinace kláves Ctrl + F zobrazte vyhledávací pole a zadejte "logicaldisk" a stiskněte klávesu enter.

    Okamžitě vás přivede do třídy Win32_LogicalDisk.

    Ve spodní části aplikace můžete vidět, že máme dvě instance třídy.

    Jakmile budeme mít třídu, kterou hledáme, dotazování z PowerShell je přímo vpřed.

    Získat-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"

    Tato syntaxe jsem neviděl, protože lidé v těchto dnech preferovali používání nové parametrizované syntaxe.

    Get-WmiObject - třída Win32_LogicalDisk

    Chcete-li získat informace z jiného počítače v síti, můžete jednoduše použít parametr ComputerName.

    Get-WmiObject - Třída Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator

    Pomocí CIM

    Vzhledem k tomu, že CIM je k dispozici pouze v systémech Windows 8 a Server 2012, pohybem vpřed je to určitě cesta.

    Get-CimInstance -ClassName Win32_LogicalDisk

    K dispozici je také dokončení karty pro parametr -ClassName při použití funkce Get-CimInstance, která ukazuje, že v budoucnu se bude zaměřovat úsilí společnosti Microsoft.

    Společnost WMI byla ve skutečnosti vyvinuta zcela samostatným týmem v rámci společnosti Microsoft, ale následně jej převzali lidé odpovědní za PowerShell. Byli to ti, kteří si všimli, že bude velmi těžké vyčistit špatnou práci WMI. Při pokusu o nápravu situace se pokoušejí zpřístupnit nástroje WMI a CIM psaním vícedávkových výkresů, které používají WMI a CIM pod kapotou. Jediný způsob, jak zkontrolovat, zda je cmdlet obal, je prohlížení dokumentace. Například cmdlet Get-Hotfix je wrapper pro třídu Win32_QuickFixEngineering, jak je vidět v dokumentaci.

    To znamená, že můžete získat opravy hotfix na vzdálených počítačích pomocí rutiny Get-HotFix namísto dotazu služby WMI.

    Get-HotFix -ComputerName localhost

    Takže to máte. Jen si pamatujte, že pokud je k dispozici vyhrazený cmdlet, budete jej vždy chtít použít, následovaný CIM, pokud cmdlet neexistuje. Konečně, pokud se vše ostatní nezdaří, nebo máte ve svém prostředí starší stroje, budete chtít WMI používat. To je vše, co mám tentokrát. Uvidíme se zítra za zábavu PowerShell.