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; przydatnelist brief(skrót) ilist 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(lublist,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 (odpowiedniktaskkill).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.