Батники · 07.05.2022

WMIC: Кто пользователь хоста?

Большую часть своих батников я уже перевел в PS1, но всё же бывают моменты, когда магия PowerShell недоступна, а выпросить что-то с удалённой машины очень надо. В такие моменты на помощь приходит инструментарий управления Windows — WMI (здесь вики, а здесь русскоязычная документация).

В чём WMI уж точно не откажешь — так это в лаконичности. Задал вопрос — получил ответ. Разумеется, без уточняющих и без интерпретации, но ответ будет исчерпывающим (если повезёт). Из минусов — WMI может быть очень задумчивым, но в определённых условиях это можно простить. Кроме того, если нужно как-то обработать выдачу — придётся парсить. А если для наглядности — вещь просто незаменимая.

Кстати, обращение к функциям wmi является самым простым методом для получения информации об удаленном компьютере не прибегая к помощи сторонних утилит. Можно собрать минимальные данные о содержимом системного блока или, например, узнать текущего пользователя удалённого хоста.

Вот этот батник в миг с помощью WMIC возвращает имя пользователя, который совершил вход на доменном компьютере:

:begin
    @echo off
    title WMIC USER
    set /p HOST=PCNAME:
	title WMIC USER ON %HOST%
	@echo on
    wmic /node:"%HOST%" COMPUTERSYSTEM GET USERNAME
	
	@echo off
	set /p NEXT=NEXT PC (Y or N)?

	If /i "%NEXT%"=="Y" goto :begin
	If /i "%NEXT%"=="N" exit

Скрипт зациклен и его вполне можно держать в фоне, обращаясь при необходимости.