wmic

Interfejs WMI z wiersza poleceń do zapytań o sprzęt, system i procesy (przestarzały).

wmic to interfejs WMI (Windows Management Instrumentation) z wiersza poleceń. Pozwala odpytać system o niemal wszystko — sprzęt, dyski, procesy, usługi, konta, konfigurację sieci — a nawet wywoływać metody, które coś zmieniają (np. uruchomić usługę albo ubić proces). Zamiast klikać po oknach zarządzania, piszesz jedno polecenie i dostajesz dane w tekście, gotowe do skryptu. Ważna sprawa na start: wmic jest przestarzały. Microsoft oznaczył go jako deprecated od Windows 10 21H1 i sukcesywnie wycofuje z systemu. Na nowych maszynach może go po prostu nie być. Następca to PowerShell (Get-CimInstance / Get-WmiObject). Mimo to warto go znać — wciąż siedzi w tysiącach starych skryptów, batchy i dokumentacji.

Składnia i najważniejsze opcje

Podstawowy schemat wygląda tak: wmic [alias] [where klauzula] get|call|list [właściwości]

  • alias — komponent systemu, o który pytasz, np. cpu, process, service, diskdrive, nicconfig.
  • where "warunek" — filtr zawężający do konkretnych obiektów, np. where "name='notepad.exe'".
  • get — pobiera wskazane właściwości; get * zwraca wszystkie.
  • list — zwraca gotowy zestaw danych; przydatne list brief (skrót) i list full (pełne).
  • call — wywołuje metodę aliasu, która coś zmienia (start usługi, zakończenie procesu).
  • /node:nazwa — uruchamia zapytanie na zdalnym komputerze zamiast lokalnym.
  • /format:csv (lub list, table) — zmienia format wyjścia, wygodne do dalszej obróbki.
  • /? — pomoc; np. service call /? pokaże dostępne metody danego aliasu.

Przykłady użycia

  • wmic cpu get name, numberofcores, maxclockspeed — wypisuje model procesora, liczbę rdzeni i taktowanie.
  • wmic process where "name='chrome.exe'" get processid, workingsetsize — pokazuje PID-y i zużycie pamięci wszystkich procesów Chrome.
  • wmic process where "name='notepad.exe'" call terminate — zabija wszystkie instancje Notatnika (odpowiednik taskkill).
  • wmic service where "name='Spooler'" call startservice — startuje usługę bufora wydruku.
  • wmic /node:SERWER01 os get caption, version — pyta zdalny komputer o nazwę i wersję systemu.

Częste błędy i pułapki

Najczęstszy zgrzyt to cudzysłowy: w klauzuli where wartości otaczasz apostrofami, a warto całą klauzulę zamknąć w cudzysłowach, np. where "name='cmd.exe'". Pomieszasz je i dostaniesz „Invalid query”. Druga rzecz: call terminate nie pyta o potwierdzenie i działa masowo — jeśli warunek pasuje do kilku procesów, ubijesz wszystkie. Zawsze najpierw zrób get, żeby zobaczyć, co złapiesz. /node: wymaga uprawnień administratora zdalnej maszyny i działającego WMI (port RPC), więc na zablokowanym firewallu polecenie zawiśnie. I najważniejsze na przyszłość: nie buduj nowych rozwiązań na wmic — na świeżym Windows może go już nie być, więc migruj do PowerShell i cmdletów CIM.

Powiązane komendy: powershell (Get-CimInstance, Get-WmiObject), tasklist, taskkill, sc, systeminfo, reg.