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>:
ошибка, если после запятой есть пробел.