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:
I pozostańcie czujni przez resztę serii przez cały tydzień.
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.
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
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.