Geek School Korzystanie PowerShell, aby uzyskać informacje o komputerze
Usługa WMI i jej nowszy brat CIM mogą być używane do zarządzania komputerami z systemem Windows w danym środowisku. Ale czy znasz różnicę między nimi? Dołącz do nas, gdy się obejrzymy.
Zapoznaj się z poprzednimi artykułami 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ć na komputerze. 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ą pewne szalone rzeczy z portami, które decydują się komunikować.
Począwszy od Windows 8 i Server 2012, WMI jest stopniowo wycofywany 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 przy użyciu Zdalnych wywołań procedur, CIM używa HTTP, co wydaje się mieć ogromną różnicę. Na zapleczu wciąż 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 jakiegoś czasu nie widziałem tej składni, a ludzie wolą korzystać z 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
Istnieje także uzupełnienie tabulatora dla parametru -ClassName podczas korzystania z Get-CimInstance, co pokazuje, że w przyszłości to właśnie działania Microsoftu zostaną skupione.
W rzeczywistości WMI został opracowany przez zupełnie 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ęp do WMI i CIM, pisząc cmdlety zawierające aplikacje 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 zapytania WMI.
Get-HotFix - nazwa_komputera localhost
Więc masz to. Pamiętaj, ż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żywać WMI. To wszystko, co mam na ten czas. Do zobaczenia jutro po więcej zabawy z PowerShell.