Я пытаюсь запустить скрипт перезапуска для списка компьютеров, где он использует 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 выбирает один из двух других IP-адресов из DNS и пытается подключиться, используя те, где в качестве psshutdown использует NETBIOS или другой сервис для выдачи завершения и доволен этим.
У меня вопрос, есть ли способ использовать WMIC, чтобы заставить его использовать определенную подсеть, или заставить его искать IP-адреса перед выполнением команд? Использовать имена хостов намного проще, поскольку их можно просто экспортировать из AD или аналогичных, и я бы предпочел не преобразовывать все в использование IP-адресов.
Я собираюсь исследовать некоторые самостоятельно, но это может быть порядок IP-адресов в самом компьютере имеет значение.