Get-CimInstance to cmdlet PowerShella, który pobiera instancje klas WMI/CIM z lokalnego lub zdalnego komputera z Windows. Mówiąc po ludzku: to twoje okno na sprzęt, system operacyjny i konfigurację maszyny. Chcesz wiedzieć ile ma RAM-u, jaki BIOS, które usługi działają albo jaki jest numer seryjny dysku? Pytasz odpowiednią klasę CIM i dostajesz gotowy obiekt. Jest to następca starego Get-WmiObject — szybszy, oparty na protokole WS-Man zamiast DCOM i znacznie przyjaźniejszy przy pracy zdalnej.
Składnia i najważniejsze opcje
Podstawowa forma to Get-CimInstance [-ClassName] . Najczęściej używane parametry:
-ClassName— nazwa klasy CIM, którą odpytujesz, np.Win32_OperatingSystem. To parametr pozycyjny, więc nazwę możesz podać bez jawnego-ClassName.-Filter— warunek w składni WQL, np."Name='Spooler'". Filtruje po stronie dostawcy, więc jest dużo wydajniejszy niż przepuszczanie wszystkiego przezWhere-Object.-Namespace— przestrzeń nazw CIM. Domyślnieroot/cimv2, ale niektóre klasy żyją gdzie indziej (np. Hyper-V wroot/virtualization/v2).-ComputerName— nazwa lub IP zdalnej maszyny. Pod spodem tworzy sesję CIM po WS-Man.-CimSession— gotowa sesja zNew-CimSession. Jeśli odpytujesz ten sam host wiele razy, taniej raz nawiązać sesję niż za każdym razem łączyć od nowa.-Query— pełne zapytanie WQL zamiast paryClassNameplusFilter.-QueryDialect— dialekt zapytania dla-Query:WQLalboCQL.-Property— ogranicza zwracane właściwości, dzięki czemu po sieci leci mniej danych.
Przykłady użycia
Get-CimInstance -ClassName Win32_OperatingSystem— zwraca informacje o systemie: wersję, build, czas startu, wolną pamięć.Get-CimInstance Win32_Service -Filter "State='Running'"— listuje tylko aktualnie uruchomione usługi, bez filtrowania w pamięci.Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, Size, FreeSpace— pokazuje rozmiar i wolne miejsce na dyskach lokalnych (typ 3 to dysk stały).Get-CimInstance -ClassName Win32_BIOS -ComputerName SERWER01— pobiera dane BIOS-u i numer seryjny ze zdalnego serwera.Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name='notepad.exe'"— zwraca instancje procesu Notatnika przez czyste zapytanie WQL.
Częste błędy i pułapki
W -Filter obowiązuje WQL, nie składnia PowerShella: wartości tekstowe dajesz w pojedynczych cudzysłowach, a porównanie to pojedyncze =, nie -eq. Wpisanie State -eq 'Running' rzuci błędem. Filtruj przed potokiem, a nie przez Where-Object — przy zdalnych maszynach to różnica między sekundą a wiecznością. Pamiętaj, że Get-CimInstance domyślnie korzysta z WS-Man (port 5985), więc na zdalnym hoście musi być włączony winrm; jeśli go nie ma, użyj sesji DCOM przez New-CimSession -SessionOption (New-CimSessionOption -Protocol Dcom). I jeszcze jedno: nazwy klas nie są oczywiste — zanim zgadniesz, sprawdź Get-CimClass.
Powiązane komendy: Get-CimClass, New-CimSession, Invoke-CimMethod, Set-CimInstance oraz przestarzały Get-WmiObject.