Пакетный скрипт перестает выполняться после команды winrs

У меня есть сценарий, который содержит вызов Winrs для того, чтобы удаленно запустить выполнение.exe на целевой машине, указанной пользователем.

Я хочу следующую функциональность:

  • стартовый скрипт
  • запрашивать у пользователя имя целевого ПК
  • winrs на целевой ПК, выполняющий.exe и сообщает пользователю, который запустил скрипт, что это делается.
  • остановите выполнение winrs и сообщите пользователю, запустившему скрипт, что он закончил.
  • выход.
  • Я хочу получить все выходные данные на компьютере, на котором был запущен скрипт, и не хочу показывать активность на целевой машине.

У меня есть следующий код:

@echo off

echo -------------------------------------------------------
echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE
echo -------------------------------------------------------
SET /p pcToReconnect= 
echo Attempting to contact Agent.

call winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1

echo Agent reconnected. Please allow ~5mins for your management console to update.

Код выполняется до вызова winrs и фактически выполняет исполняемый файл.exe на целевой машине, но кажется, что удаленная оболочка остается открытой и ничего не делает после этого.

Если я нажму ctrl+c в этот момент, "Завершение оболочки? (Y /n)" будет помещено в мой лог-файл (но не выводится в командной строке cmd), и я смогу затем нажать "y" и ввести, после чего удаленный оболочка завершается, и в командной строке появляется "Завершить пакетное задание (Y/N)", однако последний оператор echo никогда не выполняется.

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

Вся помощь приветствуется!

1 ответ

Решение

Ты используешь call который выполняет новый cmd.exe окно и запуск winrs в этом новом окне и выход. Удалите это, и это будет работать. Я добавил паузу в конце, если вы запускаете пакет, дважды щелкнув по нему.

@ эхо выключено

echo -------------------------------------------------------
echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE
echo -------------------------------------------------------
SET /p pcToReconnect= 
echo Attempting to contact Agent.

winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1

echo Agent reconnected. Please allow ~5mins for your management console to update.
pause

РЕДАКТИРОВАТЬ

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

start winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1
Другие вопросы по тегам