1

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

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

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

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

4

2 回答 2

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;
}
于 2012-06-25T14:10:50.963 回答
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-

于 2014-03-04T10:46:50.187 回答