If-Koubou

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

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

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

Przeczytaj poprzednie artykuły z serii:

  • Dowiedz się, jak zautomatyzować system Windows za pomocą programu PowerShell
  • Nauka korzystania z poleceń cmdlet w PowerShell
  • Nauka korzystania z obiektów w PowerShell
  • Nauka formatowania, filtrowania i porównywania w PowerShell
  • Naucz się korzystać z Remotingu w PowerShell

I pozostańcie czujni przez resztę serii przez cały tydzień.

Wprowadzenie

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.

Usługa 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 wersji 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 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.

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

Natychmiast przeniesie cię to do klasy Win32_LogicalDisk.

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

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

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

Od dawna nie widziałem tej składni, ponieważ ludzie wolą używać nowej sparametryzowanej składni.

Get-WmiObject -Class Win32_LogicalDisk

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

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

W przypadku parametru Get-CimInstance jest również uzupełnianie tabulatora dla parametru -ClassName, co pokazuje, że w tym czasie skupimy się na działaniach Microsoftu.

W rzeczywistości WMI został opracowany przez całkowicie odrębny zespół w Microsoft, ale został przejęty przez osoby odpowiedzialne za PowerShell. Oni byli tymi, którzy zauważyli, że bardzo trudno będzie posprzątać bałagan WMI pozostawiony w tyle. Aby zaradzić tej sytuacji, 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.

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

Get-HotFix - nazwa_komputera localhost

Więc masz to. 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.