Get-CimInstance

Pobiera instancje klas WMI/CIM (następca Get-WmiObject).

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] [-Filter ]. 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 przez Where-Object.
  • -Namespace — przestrzeń nazw CIM. Domyślnie root/cimv2, ale niektóre klasy żyją gdzie indziej (np. Hyper-V w root/virtualization/v2).
  • -ComputerName — nazwa lub IP zdalnej maszyny. Pod spodem tworzy sesję CIM po WS-Man.
  • -CimSession — gotowa sesja z New-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 pary ClassName plus Filter.
  • -QueryDialect — dialekt zapytania dla -Query: WQL albo CQL.
  • -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.