PsExec se comporta de maneira muito estranha quando executado em um servidor específico
Quando uso o PsExec para executar um programa em várias máquinas remotas, na maioria dos casos, ele funciona perfeitamente. Quando executo o mesmo comando em uma máquina específica, ele trata o segundo servidor fornecido na lista separada por vírgulas como se fosse um nome de programa.
Aqui está minha chamada para os servidores remotos:
psexec \\server11111,server11112 /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"
E aqui está a saída:
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
PsExec could not start server11112 on server11111:
The system cannot find the file specified
Este comando funciona bem quando eu o executo em minha máquina de desenvolvimento. No entanto, quando executo o mesmo comando em um servidor executando o Windows 2012, ele falha e obtenho a saída acima.
Responder1
Para expandirPatrícioderesponder, em vez de listar servidores com o \\computer[,computer2[,...]
formato, você pode usar uma lista de computadores de um arquivo de texto.
Da psexec
documentação (através de psexec /?
):
Usage: psexec [\\computer[,computer2[,...] | @file]][-u user [-p psswd][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]
@file PsExec will execute the command on each of the computers listed
in the file.
Ou seja, você pode criar um arquivo de texto (por exemplo computers.txt
) no diretório em que está trabalhando preenchido com nomes de computadores:
computer
computer2
computer3
Então você pode usar o comando:
psexec @computers.txt /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"
psexec
irá então executar o comando em cada computador na ordem especificada em computers.txt
.
Responder2
Chame uma lista que não seja da linha de comando:
psexec @ListOfServers /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"
Responder3
Talvez você tenha um caractere não exibido após a vírgula. Eu recebo exatamente o mesmo
PsExec não pôde iniciar <server2> em <server1>:
erro se eu tiver um espaço após a vírgula.