PsExec ведет себя очень странно при запуске на определенном сервере

Когда я использую PsExec для запуска программы на нескольких удаленных машинах, в большинстве случаев она работает отлично. Когда я запускаю ту же команду на одном конкретном компьютере, он обрабатывает второй сервер, указанный в списке через запятую, как имя программы.

Вот мой звонок на удаленные серверы:

psexec \\server11111,server11112 /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

И вот вывод:

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

Эта команда отлично работает, когда я запускаю ее на своем компьютере разработчика. Тем не менее, когда я запускаю ту же команду с сервера под управлением Windows 2012, она терпит неудачу, и я получаю вывод выше.

3 ответа3

2

Чтобы расширить ответ Патрика, вместо перечисления серверов в формате \\computer[,computer2[,...] вы можете использовать список компьютеров из текстового файла.

Из документации psexec (через 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.

То есть вы можете создать текстовый файл (например, computers.txt) в каталоге, из которого вы работаете, с именами компьютеров:

computer
computer2
computer3

Тогда вы можете использовать команду:

psexec @computers.txt /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

psexec будет запускать команду на каждом компьютере в порядке, указанном в computers.txt .

-1

Может быть, у вас есть не отображаемый символ после запятой. Я получаю точно такой же

PsExec не удалось запустить <server2> на <server1>:

ошибка, если у меня есть пробел после запятой.

-1

Вызвать список не из командной строки:

psexec @ListOfServers /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .