我正在尝试针对计算机列表运行重启脚本,其中它使用 WMIC 查看用户是否已登录:WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME
然后psshutdown
如果没有人登录则使用。我发现,如果计算机有多个 IP 地址,它通常会连接到不同子网中的一个,然后返回,ERROR: Description = The RPC server is unavailable.
导致脚本认为没有人登录,并重新启动系统。这是一台有问题的计算机:
C:\>nslookup HOSTNAME
Server: DHCP_SERVER
Address: 10.0.0.10
Name: HOSTNAME.NET.LOCAL
Addresses: 100.1.1.30
192.168.1.45
172.1.1.6
C:\>ping HOSTNAME
Pinging HOSTNAME.NET.LOCAL [172.1.1.6] with 32 bytes of data:
Request timed out.
Request timed out.
因此,我最好的猜测是 WMIC 从 DNS 中选择了另外 2 个 IP 中的一个并尝试使用它们进行连接,而 psshutdown 使用 NETBIOS 或其他服务来发出关机命令并且对此感到满意。
我的问题是,有没有办法使用 WMIC 强制它使用特定子网,或者强制它在执行命令之前查找 IP?使用主机名要容易得多,因为它们可以简单地从 AD 或类似程序中导出,而且我真的不想将所有内容都转换为使用 IP。
我自己会调查一些,但计算机本身的 IP 顺序可能很重要。