收集远程计算机上登录的用户名?

时间:2012-06-25 13:06:24

标签: powershell vbscript dsquery

这可能是一个我想以某种方式解决的棘手问题。我之前为之工作的公司破产了。在混乱期间,许多用户拿走了公司的电脑并离开了。

现在,他们不知道的是我们在每台计算机上都安装了UAG。一种静默VPN解决方案,与域控制器通信并通过AD中的计算机帐户进行身份验证。

所以,我想要做的是运行某种类型的脚本,尝试联系每台计算机并收集登录到该计算机的用户名。这将为我提供一种简单的方法来确定该计算机是否被不在公司工作的人使用,而该公司购买了破产资源。

我已经运行dsquery来查找过去8周内的非活动计算机。将该列表与整个计算机列表进行比较,让我对目前正在使用的计算机有了很好的了解。我应该怎么做呢?

2 个答案:

答案 0 :(得分:7)

假设您的VPN已进入远程计算机时没有防火墙限制,您可以使用WMI调用来查询已登录的用户:

@(Get-WmiObject -ComputerName remote-pc -Namespace root\cimv2 -Class Win32_ComputerSystem)[0].UserName;

如果要在机器列表上迭代执行此操作,请执行以下操作:

$MachineList = Get-Content -Path c:\ListOfMachines.txt; # One system name per line
foreach ($Machine in $MachineList) {
    @(Get-WmiObject -ComputerName $Machine -Namespace root\cimv2 -Class Win32_ComputerSystem)[0].UserName;
}

答案 1 :(得分:1)

我会使用像这样的批处理脚本:

FOR /F %%a IN (computers.txt) DO ( FOR /F "tokens=2 delims=\" %%b IN ('WMIC /node:"%%a" computersystem get username') DO ( ECHO The user who's logged on to computer %%a is: %%b ) )

其中computers.txt是一个列表,其中包含新行上的每个计算机名称,如下所示:

LAPTOP001
DESKTOP001
DESKTOP005

循环的输出将是这样的:

The user who's logged on to computer LAPTOP001 is: johndoe The user who's logged on to computer DESKTOP001 is: janedoe The user who's logged on to computer DESKTOP005 is: ericdoe-

相关问题