PsExec обрабатывает второй удаленный компьютер в списке как имя программы

PsExec обрабатывает второй удаленный компьютер в списке как имя программы

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, она не выполняется, и я получаю вывод, указанный выше.

решение1

Чтобы расширитьПатрик'sотвечать, вместо перечисления серверов в \\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.

решение2

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

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

решение3

Может у вас после запятой неотображаемый символ. У меня то же самое

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

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

Связанный контент