用户名到Windows机器名称映射

我在Windows 2003 AD的IP范围内有一大堆用户的Windows XP机器。 不幸的是,这些名字与用户名没有任何关系。 任何人都知道我可能脚本获取用户名到机器名称映射?

我的域pipe理员帐户是所有(或几乎所有)框上的本地pipe理员。 所以我可能会查询每个框(只有~40)。 我愿意接受我的部分解决scheme。 例如,如果我只在80%的箱子里得到这个,或者只是最后一个login的人。

如果可能的话,我很乐意从Linux编写脚本。

所以你的用户永远不会在电脑之间移动,呃?

Barracuda过滤设备或WebSense等设备/系统通过在域控制器计算机上运行软件来监控login,并构build实时更新的login用户数据库。

我想你可以使用PsLoggedOn SysInternals工具,但是你不会在Linux机器上运行它。

编辑:

假设path中的“computers.txt”和“PsLoggedOn.Exe”中的计算机名称列表:

@echo off for /F %%i in (computers.txt) do ( call :do_check %%i ) goto end :do_check for /F "usebackq delims= " %%i in (`psloggedon \\%1 -x -l ^| find /v "NT AUTHORITY" ^| find /v "Users logged on locally"`) do echo %1,%%i :end 

发送该脚本的输出到一个文件,你应该得到的输出:

 computername,username ... 

您可以收到多个响应每台计算机,什么W / Windows是多用户和所有。

由于您使用的是活动目录域,因此您可以使用login脚本来执行此操作,但只有40台机器可能会更快地转到这些目录,并手动执行,但请查看hostname命令和%username%variables

我会质疑是否需要这样做,尽pipe大多数情况下,从用户分离计算机和使用漫游configuration文件,redirect文件夹和组策略都是有利的,但您应该可以相当简单地做到这一点。 我倾向于使用BGInfo(从sysinternals中免费)在桌面壁纸上显示计算机名称,以便用户在支持呼叫过程中可以根据需要向支持台报告计算机名称。