Поиск по сайту:

Настройка приложения Windows для работы на неопределенный срок с помощью PowerShell


Если вы привыкли к bash и плохо знакомы с PowerShell, даже самые простые задачи могут сбивать с толку. Для всех администраторов Linux, вынужденных использовать Windows Server, вот как настроить программу для запуска в качестве демона с автоматическим перезапуском.

Пока ($true), Start-Process

В PowerShell вы можете зацикливаться, как и во многих языках программирования и сценариев. Синтаксис: while($true), за которым следуют фигурные скобки для цикла.

В этом цикле мы собираемся запустить процесс с помощью Start-Process. Это требует аргумента -FilePath с путем к вашему исполняемому файлу. Для этого можно использовать относительный путь.

while($true) 
{ 
    Start-Process -FilePath .StartServer.exe -Wait 
}

Вам также понадобится параметр -Wait , потому что по умолчанию PowerShell будет бесконечно зацикливаться и потреблять всю вашу оперативную память, отключая вас от RDP и принудительно перезапуская сервер. Я обнаружил это трудным путем, поэтому убедитесь, что он ждет.

Это запустит процесс как отдельное окно, а окно PowerShell будет работать в фоновом режиме. Если приложение аварийно завершает работу или завершает работу, сценарий PowerShell автоматически перезапустит его.

Если вам сложно работать в собственном окне, попробуйте запустить его с параметром -NoNewWindow. Однако это не очень хорошо обрабатывает stderr, поэтому вы можете попробовать Invoke-Process, пользовательскую функцию из галереи PowerShell.

В моем случае я запускал несколько таких окон, поэтому я установил заголовки как имя каталога, чтобы я мог различать их.

$host.ui.RawUI.WindowTitle = $(get-location)

Запуск при запуске

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

К счастью, в Windows это довольно просто. Откройте планировщик заданий:

Создайте новую базовую задачу:

Установите его для запуска при запуске компьютера:

Выберите «Запустить программу» и найдите свой сценарий. Здесь вы также можете добавить аргументы.

И при этом вы должны быть защищены от перезапусков и случайных сбоев приложений.