Estou tentando executar um script de reinicialização em uma lista de computadores, onde ele usa a WMIC para ver se os usuários estão conectados: WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME
e, em seguida, usar psshutdown
se ninguém estiver conectado. O que eu encontrei, Se o computador tiver vários endereços IP, ele geralmente se conectará a uma sub-rede diferente e retornará ERROR: Description = The RPC server is unavailable.
, fazendo com que o script pense que ninguém está conectado e reinicie o sistema. Aqui está um problema de computador:
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.
Então, meu melhor palpite é que a WMIC está escolhendo um dos dois outros IPs do DNS e tentando se conectar usando esses, onde o psshutdown usa o NETBIOS ou outro serviço para emitir o desligamento e fica feliz com isso.
A minha pergunta é, existe uma maneira de usar o WMIC para forçá-lo a usar uma sub-rede específica, ou forçá-lo a pesquisar IPs antes de executar os comandos? É muito mais fácil usar nomes de host, já que eles podem simplesmente ser exportados do AD ou similar, e eu realmente prefiro não ter que converter tudo para IPs.
Vou investigar algumas, mas pode ser a ordem dos IPs no próprio computador.