Статья рассказывает, как определить имя пользователя, работающего на том или ином компьютере в сети, например, что на компьютере BUH1 работает пользователь с логином IVANOVA.
Определение имени пользователя в командной строке или bat файле
Простейший способ получить эту информацию – выполнить команду nbtstat -a BUH1, которая даст примерно такой вывод:
Local Area Connection: Node IpAddress: [192.168.10.201] Scope Id: [] NetBIOS Remote Machine Name Table Name Type Status --------------------------------------------- BUH1 <00> UNIQUE Registered WORKGROUP <00> GROUP Registered BUH1 <20> UNIQUE Registered WORKGROUP <1E> GROUP Registered WORKGROUP <1D> UNIQUE Registered ..__MSBROWSE__.<01> GROUP Registered BUH1 <03> UNIQUE Registered ADMINISTRATOR <03> UNIQUE Registered MAC Address = 00-0C-29-49-6B-1D
В данном примере видно, что сейчас зарегистрирован пользователь ADMINISTRATOR. С одной стороны, результат есть, с другой стороны, имя пользователя появляется в этом списке только при работающей службе сообщений (Messenger), соответственно, служба не запущена – результата нет.
Определение имени пользователя в скрипте через WMI
Поэтому надёжнее воспользоваться возможностями WMI (Windows Management Instrumentation) с помощью, например, WSH & JScript (то же самое можно написать и на VBScript, но я предпочитаю JScript).
Код скрипта
Функция LoggedUserName возвращает имя пользователя, работающего на компьютере с именем, заданным параметром pc_name.
function LoggedUserName(pc_name){ try { var wmi = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\\\" + pc_name + "\\root\\cimv2"); var pcs = wmi.ExecQuery("select * from Win32_computerSystem"); var i = new Enumerator(pcs); for(; !i.atEnd(); i.moveNext()){ var pc=i.item(); return pc.UserName; } } catch(e) { return ""; } return ""; } WScript.Echo(LoggedUserName("BUH1"));
В случае ошибки возвращается пустая строка.
Запуск скрипта
Скрипт должен быть запущен с админскими правами на удалённый компьютер.
Чтобы использовать этот скрипт в CMD (BAT) файле, можно запустить его в командном файле через CScript, например:
cscript.exe //nologo username.js