Служба Windows, которая выполняет несколько пакетных команд параллельно - PullRequest
0 голосов
/ 24 августа 2018

Так что я уже знаю, как запускать две пакетные команды параллельно, как это

start /b cmd /c command1 
start /b cmd /c command2

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

Мой сервис, который я хочу сделать, должен запускаться command1 и command2 параллельно (сначала запустить command1, затем command2, пока command1 все еще работает), а когда служба останавливается, оба (все) из связанных процессов также должны остановиться.

Я также хочу избежать необходимости писать какую-нибудь программу на Python / C # или что-то еще и делать это напрямую из сценариев Windows / Batch / Powershell, если это возможно.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Не на 100% уверен, зачем вам нужен сервис и что вам нужно делать, но из ваших комментариев может иметь смысл следующий подход.

Создание запланированных задач в Windows для запуска, остановки, запуска в системезапускать и запускать в СИСТЕМНОМ (или любом другом) контексте.Вы автоматизируете создание запланированных задач с помощью PowerShell.

Используйте задания PowerShell для одновременной обработки в PowerShell.

0 голосов
/ 24 августа 2018

вы определенно можете делать то, что вам нужно, из службы Windows, вместо того, чтобы открывать консольное окно с помощью команды запуска в .NET, вы можете использовать классы Process и ProcessStartInfo, см. Здесь:

Выполнение командного файла в C #

таким образом вы можете сохранить ссылку на объект Process, который вы запустили, а при остановке службы вы просто уничтожите оба процесса.

...