Eu não tenho mais uma máquina Windows, mas costumava fazer essas coisas no trabalho. Há psexec que permite que você remova para outro servidor. Você também pode procurar no remoting do powershell.
Powershell Remoting consulte link
Usando o Dos / Batch, consulte o link
Se você quiser que eles sejam executados simultaneamente, você pode fazer isso, executando tarefas no powershell, veja o mesmo site ss64.
Se você estiver interessado ...
Se seus servidores estão listados no diretório ativo, você pode fazer um pequeno truque onde você diz loop através de computadores usando o Active Directory
dsquery computer -limit 0 | ?{$_ -imatch "CN=([^,]+),"} | % {
#remotely run your script here through ps remote
}
ou substitua dsquery ... por gc $ your_file_name contendo a lista de arquivos. Dos / Batch - minha sintaxe pode estar desativada, mas esta é uma ótima maneira de fazer um loop pelos computadores
for /f "eol=, tokens=1, delims=" %cc in ('dsquery computer -name -limit 0 ^| find /i /r /c:'"CN=([^,]+),"') do (
@REM cannot recall how i used to get back references in dos like this, so may be off.
@REM call your script here, passing your batch program to psexec
set computer=%%c
echo computer=!computer!
)
ou substitua dsquery ... pelo tipo "% seu nome de arquivo%"
Além disso, se alguma vez você encontrar um problema definindo variáveis dentro de um loop em lote onde elas não persistem como seria de esperar, coloque setlocal enabledelayedexpansion no topo de seu programa e avalie suas variáveis como este ! var_name ! em vez de% var_name%