Powershell: Перезапуск процесса

PowerShellPowershell — очень мощный инструмент в среде Windows,  прежде всего он помогает администраторам Windows, но и опытные пользователи тоже найдут ему применение на своём компьютере.

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

Powershell: Перезапуск процесса

В работе за домашним или офисным компьютером, Windows-сервером периодически возникает потребность в перезапуске процесса. Причины бывают разные:

  • процесс зависает
  • процесс потребляет много памяти

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

Для начала нам необходимо найти процесс, который нам нужен. Открываем диспетчер задач, нажимаем комбинацию клавиш (несколько на выбор):

  • Ctrl+Alt+Del выбрать «диспетчер задач»
  • Ctrl + Shift + Esc при данной комбинации диспетчер сразу откроется
  • Комбинация клавиш: Win+R на клавиатуре, далее вводим taskmgr  и нажимаем Enter
  • Нажимаем правой кнопкой мыши в любом пустом месте на панели задач и мы уже знаем что там выбрать.

Во всех вышеперечисленных манипуляциях откроется компьютерная программа для вывода на экран списка запущенных процессов и потребляемых ими ресурсов, вида:

 

 

 

 

 

Нас интересует вкладка: Процессы, здесь отображается детальная информация обо всех процессах, которые сейчас запущены. Чтобы получить тоже самое в консоли Powershell, необходимо либо в пуске, в поисковой строке операционной системы ввести powershell, либо комбинацией Win+R ввести так же

powershell, и нажать ОК, откроется консоль:

Далее вводим:

И получаем немаленький список вывода.

Нам необходим определённый процесс, например: «Telegram»:

Или можно, проще:

В обоих случаях мы получаем вывод того, что процесс работает. Для того, чтобы процесс перезапустить будем использовать алгоритм:

получить состояние процесса, убить (остановить) процесс — Stop-Process, стартовать процесс, реализация:

Мы заводим переменную proc, кладём в неё объект, дальше убиваем (принудительно останавливаем) этот процесс, и в 3-ей строке указываем расположение процесса, чтобы его запустить.

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

На данный момент каждые 5 секунд скрипт будет перезапускать данный процесс. Для удобства в блок try-catch можно внести обработку исключении, исключение необходимо указывать в блоке catch. Как  и обещал, секрет для тех, кто дочитал статью до конца. Действие, описанное выше можно запускать незаметно для пользователя, даже не заводя задачу в планировщике задач, просто добавил наш код в блок:

Итоговый вариант:

Данный блок кода можно просто занести в консоль powershell, нажать Enter на клавиатуре, и закрыв консоль, всё будет работать, так как вы сохранили данное действие в памяти.

Надеюсь, данная статья вам очень поможет. Всем чистого кода!

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

Опиши свой кейс здесь, если у тебя остались вопросы и мы обязательно ответим...