Tenho um domínio do Active Directory em execução no Windows Server 2003 R2. Os clientes são uma mistura de Windows XP SP2, Vista e Windows 7. Quero executar um script (arquivo em lote, mas possivelmente um script VB) em cada máquina, uma vez. Não quero que isso aconteça no logon, logoff, inicialização ou desligamento. Eu só quero que isso aconteça o mais rápido possível e uma vez.
Existe uma maneira relativamente fácil de fazer isso que funcione em todos os tipos de clientes?
Obrigado.
ATUALIZAR: Eu deveria ter mencionado isso originalmente: muitos dos PCs estão atrás de roteadores baratos de 5 portas conectados a uma tomada Ethernet. Pense em cinco estudantes de pós-graduação compartilhando um escritório. Portanto, cada PC em um escritório possui um IP RFC1918. Estou no lado público do roteador, então não consigo me conectar diretamente ao PC. Portanto, PsExec ou WMI não funcionarão. O WinRM pode, mas a maioria dos PCs não o possui instalado. Acho que minha única opção é usar um GPO de alguma forma, talvez para agendar uma tarefa para executar um script a partir de uma unidade de rede.
Responder1
eu diria usarpsFerramentaspsexec.exe para executar remotamente o script.
É um processo indolor para começar a funcionar, não precisa que você faça login em todas as estações e não deixa rastros depois.
Em resposta a todos os comentários, como eles podem conversar com os DCs para estarem no domínio, você poderá pular para um DC e executar o script psexec a partir daí.
Responder2
Isso parece um trabalho parapsexec. PSexec permitirá que você execute remotamente um script em todos os computadores do domínio se você fornecer '\' como computador. Você precisará adicionar algum tipo de lógica ao seu script para deixar algum tipo de indicação no sistema que foi concluído e verificar isso antes de iniciar.
Responder3
Você pode escrever um script wrapper e usar psexec para conectar-se às máquinas remotas e executar o script que deseja executar, desde que esteja em um local acessível a essas máquinas. Você só precisa ter uma fonte para os PCs aos quais está se conectando para fazer um loop através deles.
Responder4
Quero executar um script (arquivo em lote, mas possivelmente um script VB) em cada máquina, uma vez. Não quero que isso aconteça no logon, logoff, inicialização ou desligamento. Eu só quero que isso aconteça o mais rápido possível e uma vez. Existe uma maneira relativamente fácil de fazer isso que funcione em todos os tipos de clientes?
VBscript.
Muitos dos PCs estão atrás de roteadores baratos de 5 portas conectados a uma tomada Ethernet. Pense em cinco estudantes de pós-graduação compartilhando um escritório. Portanto, cada PC em um escritório possui um IP RFC1918.
Estou surpreso que isso funcione. Presumo que todos os roteadores tenham sub-redes diferentes; caso contrário, seu domínio ficará um caos completo e absoluto, pois você terá vários clientes tentando reivindicar o mesmo endereço IP 192.168.xx...
Estou no lado público do roteador, então não consigo me conectar diretamente ao PC. Portanto, PsExec ou WMI não funcionarão.
Este é o seu primeiro problema. Você precisa “entrar” na rede de cada um. Parece que os PCs remotos estão atrás de algum tipo de firewall NAT, e isso causará todo tipo de dor de cabeça. Tecnicamente, “em um mundo perfeito”, seu servidor deveria estar na mesma rede que seus clientes. Os clientes estão se conectando via VPN? Nesse caso, esse será o seu ingresso "in".
Acho que minha única opção é usar um GPO de alguma forma, talvez para agendar uma tarefa para executar um script a partir de uma unidade de rede.
Isso pode ser um problema se o GPO criado se aplicar quando o usuário fizer login, já que você disse que não deseja que isso aconteça quando o usuário fizer login na máquina.
Lamento ofendê-lo com isso, mas dada a natureza da pergunta, devo perguntar (se você estiver disposto a responder): por que você precisa fazer isso? Uma rede gerenciada não seria configurada dessa maneira insana e, francamente, pelo meu ponto de vista, parece que você deseja montar algum tipo de violação contra essas redes internas.