Główna » jak » Geek School Korzystanie PowerShell, aby uzyskać informacje o komputerze

    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.