Статья рассказывает, как определить имя пользователя, работающего на том или ином компьютере в сети, например, что на компьютере 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
Имя пользователя по сети
Метки: