PsExec запускает удаленный пакетный файл в видимом режиме - PullRequest
1 голос
/ 05 марта 2012

Я пытаюсь выполнить следующую команду

psexec \\x.x.x.x -d -c -f cmd.exe /c d:\test\hello.bat

Работает нормально и выдает

cmd.exe started on x.x.x.x with process ID 106084.

Но когда я захожу на x.x.x.x, я могу найти идентификатор процесса, но видимый пакетный файл не запускается. Он работает в фоновом режиме.

Пакетный файл

echo "Hello"
pause

Подскажите, пожалуйста, как увидеть окно командной строки, запущенное на x.x.x.x

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 23 сентября 2014

Я думаю, что вы можете посмотреть идентификатор сессии для вашего текущего пользователя и передать его в качестве параметра с помощью -i Например:

PsExec.exe -s -d -i 2 c:\temp\MyServer MyConsoleApp.exe

Чтобы посмотреть текущий идентификатор сессии, вы можете запустить query session

Иногда идентификатор сеанса равен 2 для активного пользователя, для которого вы хотите запустить процесс, поэтому попробуйте найти правильный идентификатор сеанса и использовать его с параметром -i.

1 голос
/ 28 августа 2012

Алекс К. прав.В частности, удалите «-d», который говорит PsExec «Не ждите завершения процесса (неинтерактивный)».Фактически, если вы запустите приведенный выше пример командного файла, который включает в себя «паузу», процесс cmd будет продолжать выполняться на удаленном хосте (невидимом для графического интерфейса удаленного хоста, поскольку он выполняется через PSExec), пока вы не убьете этот процесс.

0 голосов
/ 29 марта 2014

Попробуйте один из них:

  1. psexec \\server -u xxx-p xxxx /accepteula  -i 1 -d cmd.exe /K "cd d:\test && call hello.bat"
    
  2. psexec \\server -u xxx -p xxxx /accepteula  -i 1 -d d:\test\hello.bat
    
...