27Aug

Geek School: Używanie PowerShell do uzyskiwania informacji o komputerze

WMI i jego nowszy brat CIM mogą być używane do zarządzania maszynami Windows w twoim środowisku. Ale czy znasz różnicę między nimi? Dołącz do nas, kiedy się obejrzymy.

Zapoznaj się z poprzednimi artykułami z serii:

  • Dowiedz się, jak zautomatyzować system Windows za pomocą programu PowerShell
  • Nauka korzystania z poleceń Cmdlets w programie PowerShell
  • Nauka korzystania z obiektów w programie PowerShell
  • Nauka formatowania, filtrowania i porównywania w programie PowerShell
  • Nauka korzystania z programu Remotowanie wPowerShell

Pozostań zestrojony przez resztę serii przez cały tydzień.

Wstęp

WMI oznacza Windows Management Instrumentation. Słowo "Instrumentacja" odnosi się do faktu, że WMI umożliwia uzyskanie informacji o stanie wewnętrznym komputera, podobnie jak instrumenty deski rozdzielczej w samochodzie mogą pobierać i wyświetlać informacje o stanie wewnętrznych komponentów samochodu. WMI

składa się z repozytorium, które zawiera klasy reprezentujące komponenty, którymi można zarządzać wewnątrz komputera. Rozumiemy przez to, że WMI ma klasę Win32_Battery, co nie oznacza, że ​​twoja maszyna zawiera baterię.Klasy te mogą być następnie wyszukiwane lokalnie lub nawet w sieci przy użyciu języka zapytań bardzo podobnego do SQL o nazwie WQL.Jednak wiadomo, że WMI jest bardzo niewiarygodny, głównie ze względu na to, że jest oparty na RPC( Remote Procedure Calls), które robią szalone rzeczy z portami, z którymi się komunikują.

Począwszy od systemów Windows 8 i Server 2012, usługa WMI jest stopniowo wycofywana na rzecz modelu Common Information Model lub CIM.Jedyną różnicą między WMI i CIM są używane przez nich protokoły transportowe. Podczas gdy WMI wykonuje kwerendy za pomocą Remote Procedure Calls, CIM używa HTTP, co wydaje się mieć ogromną różnicę.Na zapleczu nadal rozmawiają z tym samym repozytorium informacji.

Korzystanie z usługi WMI

Najszybszym i najłatwiejszym sposobem na zbadanie informacji dostępnych w usłudze WMI jest pobranie kopii dowolnej bezpłatnej przeglądarki obiektów WMI.Podoba nam się ten. Po pobraniu uruchom go i będziesz miał graficzny interfejs do przeglądania klas WMI.

obraz

Jeśli chcesz dowiedzieć się czegoś o konfiguracji dysku komputera, naciśnij kombinację klawiszy Ctrl + F, aby wywołać okno wyszukiwania, a następnie wpisz "logicaldisk" i naciśnij enter.

obraz

Natychmiast przeniesie cię to do klasy Win32_LogicalDisk.

obraz

W dolnej połowie aplikacji widać, że mamy dwa wystąpienia tej klasy.

obraz

Gdy już mamy klasę, której szukamy, zapytanie o nią z PowerShell jest proste.

Get-WmiObject --Query "SELECT * FROM Win32_LogicalDisk"

obraz

Nie widziałem tej składni przez jakiś czas z ludźmi, którzy wolą używać nowej sparametryzowanej składni.

Get-WmiObject -Class Win32_LogicalDisk

obraz

Jeśli chcesz uzyskać informacje z innego komputera w sieci, możesz po prostu użyć parametru ComputerName.

Get-WmiObject -Class Win32_LogicalDisk -KomputerName Viper -Credential viper \ administrator

obraz

Korzystanie z CIM

Pamiętając o tym, że CIM jest dostępny tylko w Windows 8 i Server 2012, posuwanie się naprzód to zdecydowanie droga.

Get-CimInstance -ClassName Win32_LogicalDisk

obraz

Istnieje również uzupełnienie tabulatora dla parametru -ClassName podczas korzystania z Get-CimInstance, co pokazuje, że w tym czasie skupimy się na działaniach Microsoft.

Rzeczywiście, WMI został opracowany przez zupełnie odrębny zespół w Microsoft, ale został przejęty przez ludzi odpowiedzialnych za PowerShell. Oni byli tymi, którzy zauważyli, że bardzo trudno będzie posprzątać bałagan WMI pozostawiony w tyle. Próbując poprawić sytuację, próbują zwiększyć dostępność WMI i CIM, pisząc cmdlety opakowujące, które używają WMI i CIM pod maską.Jedynym sposobem sprawdzenia, czy cmdlet jest opakowaniem, jest przejrzenie dokumentacji. Na przykład cmdlet Get-Hotfix jest opakowaniem klasy Win32_QuickFixEngineering, jak widać w dokumentacji.

obraz

Oznacza to, że można uzyskać poprawki na komputerach zdalnych za pomocą polecenia cmdlet Get-HotFix zamiast zapytania WMI.

Get-HotFix - nazwa_komputera localhost

obraz

Tak więc masz go. Pamiętaj tylko, że jeśli istnieje dedykowane polecenie cmdlet, zawsze będziesz chciał go użyć, a następnie CIM, jeśli cmdlet nie istnieje. Na koniec, jeśli wszystko inne zawiedzie, lub masz starsze komputery w swoim środowisku, będziesz chciał użyć WMI.To wszystko, co mam na ten czas. Do zobaczenia jutro po więcej zabawy z PowerShell.