Пакетный скрипт перестает выполняться после команды 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