Windows Management Instrumentation Command-Line inaczej WMIC  zapewnia prosty konsolowy interfejs dla  Windows Management Instrumentation czyli po prostu WMI. Polecenie dostępne od Windows XP oprócz edycji Home i systemów z rodziny Windows Server 2003. Mimo małej popularności, WMIC jest narzędziem które daje nam sporo możliwości:

  • przeglądanie instancji klas WMI, używając aliasów które sprawiają obsługę WMI bardziej intuicyjną,
  • pracę z lokalnym, zdalnym lub wieloma komputerami za pomocą pojedynczej konsoli,
  • dostosowanie aliasów i formatów wejściowych w zależności do potrzeb,
  • tworzenie i wykonywanie skryptów opartych o WMIC.

Standardowo po wpisaniu /? otrzymamy treść pomocy. Warto zapoznać się z dostępnymi przełącznikami oraz aliasami. (1).

Praktycznym i przydatnym zastosowaniem polecenia może być zdalna deinstalacja oprogramowania która na przykład wcześniej nie została rozdystrybuowana poprzez polisy GPO. W tym celu możemy korzystać z przełączników /NODE oraz /USER przy połączeniu z zdalnym hostem (2),  bądź uruchomić konsole cmd z odpowiednimi poświadczeniami (3) i pomijać autoryzacje przy poleceniach.

Poleceniem >/NODE:10.100.100.220 PRODUCT GET NAME wyświetlimy zainstalowane oprogramowanie na stacji roboczej. Niestety lista ta nie będzie pełna, uwzględnia ona tylko oprogramowanie wykorzystujące narzędzie MsiExec, które zapewnia metody instalowania i modyfikowania programów oraz wykonywania operacji dotyczących Instalatora Windows z wiersza polecenia.

Używając klauzuli WHERE możemy „wybrać” aplikację, której chcemy się pozbyć, całe polecenie będzie wyglądać w ten sposób: >/NODE:10.100.100.220 PRODUCT WHERE=”7-Zip 9.20″ CALL UNINSTALL  Zostaniemy jeszcze poproszeni o potwierdzenie naszej decyzji (4).

Gdybyśmy chcieli jednocześnie zarządzać kilkoma hostami możemy zastosować polecenie >/FAILFAST:ON /NODE:10.100.100.220,10.100.100.221, 10.100.100.222 PRODUCT WHERE NAME=”7-ZIP 9.20″ CALL UNINSTALL /NOINTERACTIVE Zrzut, co prawda prezentuje zatrzymanie procesu na zdalnych hostach (5), ale zasada stosowania jest identyczna, przełącznik w poleceniu /NOINTERACTIVE zwalnia nas z obowiązku każdorazowego potwierdzania.

WMIC to na prawdę przydatne narzędzie i myślę że może niekiedy być alternatywą dla PowerShell.

Więcej informacji o WMIC:

Mateusz Nadobnik

Z pasją poświęcam czas na zdobywanie wiedzy w zakresie szeroko rozumianej Data Platform. Zachwycony językiem skryptowym Windows PowerShell. Swoją wiedzę, doświadczenia i spostrzeżenia opisuję na blogu.

read more

4 komentarze

  • Reply

    Robert

    Listopad 4, 2016 at 7:49 pm

    Hej Mateusz,

    Bardzo ciekawe opisane 🙂
    Ja jednak, jeśli można chciałbym poprosić o pomoc z wmic. Mój problem polega na tym, że wmic na każde zapytanie zwraca błąd jak poniżej:

    wmic:root\cli>cpu
    ERROR:
    Description = ClassFactory cannot supply requested class

    Podpowiedz coś proszę.
    Pozdrawiam Rob.

  • Reply

    Mateusz Nadobnik

    Listopad 4, 2016 at 8:43 pm

    Szczerze to nie spotkałem się z takim problemem, zakładam, że wywołujesz polecenie w linii poleceń z podniesionymi uprawnieniami?
    Z PowerShella możesz bezproblemowo odpytać klasę WMI np. Win32_Processor?

  • Reply

    Robert

    Listopad 6, 2016 at 7:24 pm

    Tak wywołuję z podniesionymi uprawnieniami. PowerShell również nie pomaga, ten sam error 🙁

  • Reply

    Robert

    Listopad 8, 2016 at 6:16 pm

    Ok udało się za Twoją sugestią czyli PowerShell a poniżej to jest to czego szukałem:
    powershell „GET-WMIOBJECT ?query ?SELECT * from win32_logicaldisk where VolumeName =’DAILY'”” | Select-Object DeviceID | Out-File -Encoding „UTF8” D:\test.txt

    Dziękuję za zainteresowanie i pozdrawiam.
    Robert