PsExec trata o segundo computador remoto da lista como um nome de programa

PsExec trata o segundo computador remoto da lista como um nome de programa

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 psexecdocumentaçã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"

psexecirá 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.

informação relacionada