Проверить запущен ли процесс windows

I like the WMIC and TASKLIST tools but they are not available in home/basic editions of windows.Another way is to use QPROCESS command available on almost every windows machine (for the ones that have terminal services — I think only win XP without SP2 , so practialy every windows machine):

@echo off
:check_process
setlocal
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
set process_to_check=%~1
:: QPROCESS can display only the first 12 symbols of the running process
:: If other tool is used the line bellow could be deleted
set process_to_check=%process_to_check:~0,12%

QPROCESS * | find /i "%process_to_check%" >nul 2>&1 && (
    echo process %process_to_check%  is running
) || (
    echo process %process_to_check%  is not running
)
endlocal

QPROCESS command is not so powerful as TASKLIST and is limited in showing only 12 symbols of process name but should be taken into consideration if TASKLIST is not available.

More simple usage where it uses the name if the process as an argument (the .exe suffix is mandatory in this case where you pass the executable name):

@echo off
:check_process
setlocal
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
:: .exe suffix is mandatory
set "process_to_check=%~1"


QPROCESS "%process_to_check%" >nul 2>&1 && (
    echo process %process_to_check%  is running
) || (
    echo process %process_to_check%  is not running
)
endlocal

The difference between two ways of QPROCESS usage is that the QPROCESS * will list all processes while QPROCESS some.exe will filter only the processes for the current user.

Using WMI objects through windows script host exe instead of WMIC is also an option.It should on run also on every windows machine (excluding the ones where the WSH is turned off but this is a rare case).Here bat file that lists all processes through WMI classes and can be used instead of QPROCESS in the script above (it is a jscript/bat hybrid and should be saved as .bat):

@if (@X)==(@Y) @end /* JSCRIPT COMMENT **


@echo off
cscript //E:JScript //nologo "%~f0"
exit /b

************** end of JSCRIPT COMMENT **/


var winmgmts = GetObject("winmgmts:\\\\.\\root\\cimv2");
var colProcess = winmgmts.ExecQuery("Select * from Win32_Process");
var processes =  new Enumerator(colProcess);
for (;!processes.atEnd();processes.moveNext()) {
    var process=processes.item();
    WScript.Echo( process.processID + "   " + process.Name );
}

And a modification that will check if a process is running:

@if (@X)==(@Y) @end /* JSCRIPT COMMENT **


@echo off
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
set process_to_check=%~1

cscript //E:JScript //nologo "%~f0" | find /i "%process_to_check%" >nul 2>&1 && (
    echo process %process_to_check%  is running
) || (
    echo process %process_to_check%  is not running
)

exit /b

************** end of JSCRIPT COMMENT **/


var winmgmts = GetObject("winmgmts:\\\\.\\root\\cimv2");
var colProcess = winmgmts.ExecQuery("Select * from Win32_Process");
var processes =  new Enumerator(colProcess);
for (;!processes.atEnd();processes.moveNext()) {
    var process=processes.item();
    WScript.Echo( process.processID + "   " + process.Name );
}

The two options could be used on machines that have no TASKLIST.

The ultimate technique is using MSHTA . This will run on every windows machine from XP and above and does not depend on windows script host settings. the call of MSHTA could reduce a little bit the performance though (again should be saved as bat):

@if (@X)==(@Y) @end /* JSCRIPT COMMENT **
@echo off

setlocal
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running

set process_to_check=%~1


mshta "about:<script language='javascript' src='file://%~dpnxf0'></script>" | find /i "%process_to_check%" >nul 2>&1 && (
    echo process %process_to_check%  is running
) || (
    echo process %process_to_check%  is not running
)
endlocal
exit /b
************** end of JSCRIPT COMMENT **/


   var fso= new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1);


   var winmgmts = GetObject("winmgmts:\\\\.\\root\\cimv2");
   var colProcess = winmgmts.ExecQuery("Select * from Win32_Process");
   var processes =  new Enumerator(colProcess);
   for (;!processes.atEnd();processes.moveNext()) {
    var process=processes.item();
    fso.Write( process.processID + "   " + process.Name + "\n");
   }
   close();

5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

1

Проверять, запущен ли процесс, а если он не запущен, то запускать его

24.08.2015, 00:59. Показов 37425. Ответов 18


Студворк — интернет-сервис помощи студентам

Всех приветствую. В интернете не нашёл ответа на свой вопрос.
Очень нужен vbs-скрипт, который будет проверять, запущен ли процесс, а если не запущен, то запускать его.
В принципе, вот пункты, которые важны.

1. Проверка процесса должна происходить раз в 15 минут.
2. Вот строка запускаемого процесса с параметрами:

Код

"RustDedicated.exe" -batchmode -Dfile.encoding=UTF-8 +server.hostname "LocalServer.Pro" +server.port 28015 +server.identity "d4t1" +server.maxplayers 30 +rcon.port 28016 +rcon.ip 192.168.1.2 +rcon.password 11112 +server.seed 123456

— Это сейчас прописано в батнике…батник не справляется с перезапуском как нужно.
3. Название проверяемого запущенного процесса: RustDedicated.exe.

Буду крайне благодарен тому, кто разбирается в Visual Basic Script’ах и поможет мне.



0



raxp

10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

24.08.2015, 10:10

2

батник не справляется с перезапуском как нужно.

разобраться со своим прежде, чем делать выводы никак? Где ваш батник?

Впрочем, не нужен. Приведу элементарный вариант на примере калькулятора:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
REM Батник отслеживания процесса и запуска при его отсутствии
REM 
REM Системные требования: Win OS (на локальной машине)
REM Разработчик: Бадло Сергей Григорьевич
REM H-page: [url]http://raxp2.blogspot.com[/url]
 
echo off
chcp 1251
 
set ProcessName="calc.exe"
:m1
cls
TaskList /FI "ImageName EQ %ProcessName%" | Find /I %ProcessName%>nul||(
rem Задержка через ping
ping localhost -w 3000 > nul
rem стартуем приложение, если не найдено (при необходимости прописываем параметры запуска)
start calc
)
goto m1

Сохраняем в ‘proc.bat’. Для скрытого запуска батника пишем VBS-скрипт:

Visual Basic
1
CreateObject("Wscript.Shell").Run "proc.bat", 0, False

Сохраняем в ‘run.vbs’. Запускаем его.



2



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

24.08.2015, 16:02

3

А в диспетчере задач он есть? ( RustDedicated.exe )
Может оказаться, что проверять нужно совсем другой процесс.



1



Vasek2

5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

24.08.2015, 17:11

 [ТС]

4

Цитата
Сообщение от raxp
Посмотреть сообщение

разобраться со своим прежде, чем делать выводы никак? Где ваш батник?

Мой батник:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
 
:LOOP
for /F %%i in ('tasklist /FI "IMAGENAME eq game.exe" ^| find /C "game.exe"') do (
    if "%%i" == "0" (
        start game.exe
    )
)
timeout 900 /nobreak > nul
GOTO :LOOP

game.exe есть тот самый процесс.

Добавлено через 19 секунд

Цитата
Сообщение от Dragokas
Посмотреть сообщение

А в диспетчере задач он есть? ( RustDedicated.exe )
Может оказаться, что проверять нужно совсем другой процесс.

Конечно есть))



0



Dragokas

Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

24.08.2015, 17:22

5

Цитата
Сообщение от Vasek2
Посмотреть сообщение

Конечно есть))

Для серверных игр запуск часто происходит через лаунчер, который является только промежуточным процессом.

Цитата
Сообщение от Vasek2
Посмотреть сообщение

Мой батник:

Пришлите в виде файла.
К find добавить ключик /i
GOTO :LOOP — убрать двоеточие.
Второй строкой дописать:

Windows Batch file
1
SetLocal EnableExtensions

Команду tasklist ввести в консоль и проверить, работает ли вывод списка процессов вообще (может, у Вас служба WMI отключена).

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

Цитата
Сообщение от Vasek2
Посмотреть сообщение

батник не справляется с перезапуском как нужно.

Цитата
Сообщение от Vasek2
Посмотреть сообщение

Конечно есть))

Так все-таки процессы разные? Почему у Вас в батнике game.exe, а в 1-м посту RustDedicated.exe?
Пришлите полный релизный батник. Может у Вас там путь для запуска RustDedicated.exe неправильно прописан.
Может у Вас батник лежит рядом с ним, а запуск проихсодит от Админа или с ярлыка, который меняет рабочий каталог… еще миллион причин.



1



5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

24.08.2015, 17:27

 [ТС]

6

Цитата
Сообщение от Dragokas
Посмотреть сообщение

(может, у Вас служба WMI отключена)

WMI включена (это же Служба Инструментов Windows?).
Сейчас сделаю так, как Вы просите.

Добавлено через 4 минуты

Цитата
Сообщение от Dragokas
Посмотреть сообщение

Так все-таки процессы разные? Почему у Вас в батнике game.exe, а в 1-м посту RustDedicated.exe?
Пришлите полный релизный батник. Может у Вас там путь для запуска RustDedicated.exe неправильно прописан.
Может у Вас батник лежит рядом с ним, а запуск проихсодит от Админа или с ярлыка, который меняет рабочий каталог… еще миллион причин.

Я прислал шаблон, который мне на другом форуме составили. И вместо game.exe я подставлял RustDedicated.exe уже на своём компьютере. И параметры я тоже подставлял.
Батник запускает процесс cmd правильно, но в консоли не отображается НИЧЕГО, кроме надписи:

Код

"Setting breakpad minidump AppID = 252490"

Естественно такой «номер» меня не устраивает, т.к. я должен ведь следить, что происходит в консоли.
А так скрипт точно такой же, что я показал(пути все верные). Клал я батник рядом с exe-файлом. Пытался прописать и полный путь и просто название процесса. Результат один и тот же!
Windows 7 x64.



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

24.08.2015, 17:34

7

tasklist — системная утилита и от WMI не зависит (список процессов не идет через моникер winmgmts).



0



5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

24.08.2015, 17:42

 [ТС]

8

В общем тему заминаем. Нашёл человека, который платно напишет VBS-скрипт проверки процесса.
Я ещё раз повторяю — БАТНИК МНЕ НЕ НУЖЕН.



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

24.08.2015, 17:44

9

…госпидя, да в любом VBS-справочнике есть получение списка процессов (работа VBS скрипта в этом случае будет зависеть от WMI). Но хозяин-барин, капса только поменьше. Это к крику приравнивается, а на форуме спокойная обстановка.



1



Dragokas

Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

24.08.2015, 18:08

10

raxp, зависит.
Попробуй это:

Windows Batch file
1
2
3
net stop winmgmt /y
sc config winmgmt start= disabled
tasklist

Добавлено через 6 минут

Цитата
Сообщение от Vasek2
Посмотреть сообщение

В общем тему заминаем. Нашёл человека, который платно напишет VBS-скрипт проверки процесса.
Я ещё раз повторяю — БАТНИК МНЕ НЕ НУЖЕН.

Если что на будущее: VBScript — это в другом разделе форума.

Цитата
Сообщение от Vasek2
Посмотреть сообщение

Батник запускает процесс cmd правильно, но в консоли не отображается НИЧЕГО, кроме надписи:

А что там должно отображаться?
Если речь о консоле cmd — то там вообще ничего не должно отображаться.



1



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

24.08.2015, 18:09

11

…интересно, после дисейбла в конфигураторе перестал. Будем знать, спасибо



0



5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

24.08.2015, 20:27

 [ТС]

12

Цитата
Сообщение от Dragokas
Посмотреть сообщение

Если речь о консоле cmd — то там вообще ничего не должно отображаться.

Так вот именно, почему там ничего не должно отображаться?) Как я буду следит за консолью то?



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

24.08.2015, 21:08

13

Для VBS есть Wscript, который в окно консоли ничего не пишет. Есть другой сервер сценариев — Cscript. Впрочем, вам же платно напишут, смысла обсуждать уже нет.



0



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

24.08.2015, 21:31

14

Цитата
Сообщение от Vasek2
Посмотреть сообщение

Так вот именно, почему там ничего не должно отображаться?) Как я буду следит за консолью то?

Вопрос изначально стоял в том, что

Цитата
Сообщение от Vasek2
Посмотреть сообщение

батник не справляется с перезапуском как нужно.

а не в том, что консоль не отображает ход своей работы.
Не отображает ибо ей не даны такие инструкции, а даже наоборот частично спрятаны перенаправлением потока в > nul

Добавлено через 1 минуту
Если автор не против, перенесу тему в раздел Batch.
Все равно здесь уже не планируется кода на VBScript.



1



5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

25.08.2015, 15:14

 [ТС]

15

Цитата
Сообщение от Dragokas
Посмотреть сообщение

Если автор не против, перенесу тему в раздел Batch.
Все равно здесь уже не планируется кода на VBScript.

Пока не нужно.
Исполнитель ещё не утверждён….. может сольётся ещё.

Батник не работает как нужно.
Поясню.
Это всё нужно для сервера игрового — Rust.
Друг у меня на компьютере поставил сервер.
Проблема в том, что сервер периодически нужно выключать

полностью

командой с сайта, чтобы этот сервер обновить до актуальной версии.
Мы заметили, что если с сайта слать команду, то сервер то выключается… но батник не стартует его через нужное количество времени.
Поэтому я и решил, что лучшим вариантом будет не неделю париться с батником, а сразу сделать всё на VBS.
Надеюсь, я теперь ясно пояснил? Я уже даже разжевал…

Добавлено через 17 часов 32 минуты
Тему можно закрывать. Скрипт написан.



0



Эксперт WindowsАвтор FAQ

18068 / 7671 / 891

Регистрация: 25.12.2011

Сообщений: 11,444

Записей в блоге: 17

25.08.2015, 17:49

16

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

Цитата
Сообщение от Vasek2
Посмотреть сообщение

Тему можно закрывать. Скрипт написан.

Зачем так кричать. Оставьте красный цвет для администрации. Темы у нас не закрываются. Читайте правила форума.



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

25.08.2015, 17:51

17

Мы заметили, что если с сайта слать команду, то сервер то выключается… но батник не стартует его через нужное количество времени.

какие-то сферические выводы без разбора причин происходящего.

Оставьте красный цвет для администрации.

поправь ему, красный уже перебор.



0



5 / 5 / 0

Регистрация: 17.11.2013

Сообщений: 246

25.08.2015, 18:00

 [ТС]

18

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



0



4332 / 2122 / 661

Регистрация: 26.04.2015

Сообщений: 6,823

28.08.2015, 17:08

19

Vasek2, Не, ну со своим кипятильником, нашу воду кипятить, пришли за водой, так и отлейте другим немножко.



0



Бывают задачи, когда в командном CMD/BAT файле необходимо узнать, запущено ли какое-то определённое приложение.

Например, командный файл резервного копирования должен дождаться завершения программы, открывшей файлы. Или командный файл должен проверять работу программы и, если она не запущена, запускать её.

Для решения этих задач надо лишь воспользоваться командой tasklist с фильтром по названию приложения.

Проверить, запущено ли приложение Microsoft Outlook (outlook.exe):

@echo off
set imagename=outlook.exe
tasklist /fi "IMAGENAME eq %imagename%" | find /i "%imagename%"
if errorlevel 1 (
    echo %imagename% не запущен
    rem Выполняем действия, требуемые при закрытом Outlook
) else (
    echo %imagename% запущен
    rem Выполняем действия, требуемые при открытом Outlook
)

Другая задача – дождаться запуска программы, чтобы выполнить какие-то действия:

@echo off
set imagename=outlook.exe
:CheckProgram
tasklist /fi "IMAGENAME eq %imagename%" | find /i "%imagename%"
if errorlevel 1 cscript.exe sleep.js 1000 && goto CheckProgram
rem Выполняем действия, требуемые при открытом Outlook

Здесь используется скрипт sleep.js, делающий задержку на 1 секунду (1000 мс), см. Как сделать задержку в командном файле.

Аналогично, дождаться завершения программы, чтобы выполнить какие-то действия:

@echo off
set imagename=outlook.exe
:CheckProgram
tasklist /fi "IMAGENAME eq %imagename%" | find /i "%imagename%"
if not errorlevel 1 cscript.exe sleep.js 1000 && goto CheckProgram
rem Выполняем действия, требуемые при закрытом Outlook

Как проверить запущен ли процесс?

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

В операционной системе Windows можно использовать команду tasklist для получения списка всех запущенных процессов. Эта команда позволяет получить информацию о имени процесса, его PID (идентификатор процесса), использование памяти и другие свойства. Для проверки запущен ли определенный процесс, мы можем выполнить эту команду в командной строке и затем проанализировать вывод. Например, чтобы проверить, запущен ли процесс с именем ‘notepad.exe’, мы можем выполнить следующую команду:

tasklist | findstr /i "notepad.exe"

Вывод этой команды будет содержать строки с именем процесса ‘notepad.exe’, если он запущен, или быть пустым, если процесс не найден.

В системах на базе Linux можно использовать команду ps для получения информации о процессах. Аналогично команде tasklist, команда ps позволяет получить список запущенных процессов со всеми необходимыми свойствами. Для проверки запущен ли определенный процесс, мы можем выполнить команду ps и затем проанализировать вывод с использованием утилиты grep. Например, чтобы проверить, запущен ли процесс с именем ‘firefox’, мы можем выполнить следующую команду:

ps aux | grep "firefox"

Вывод этой команды будет содержать строки с именем процесса ‘firefox’, если он запущен, или быть пустым, если процесс не найден.

Если вы пишете программу на языке программирования, таком как Python или Java, вы можете использовать соответствующие библиотеки для выполнения проверки запущенных процессов. Например, в Python вы можете использовать модуль psutil, который предоставляет широкие возможности по работе с процессами. С помощью этого модуля вы можете получить информацию о всех процессах, и искать среди них нужный. Ниже приведен пример кода на Python, который проверяет, запущен ли процесс с именем ‘notepad.exe’:

import psutil

for process in psutil.process_iter(['pid', 'name']):
    if process.info['name'] == 'notepad.exe':
        print('Процесс notepad.exe найден')
        break
else:
    print('Процесс notepad.exe не найден')

В данном примере мы используем метод process_iter модуля psutil, чтобы получить информацию о всех процессах. Затем мы проверяем имя каждого процесса и, если имя совпадает с именем ‘notepad.exe’, выводим сообщение о нахождении процесса. Если процесс не найден, выводим соответствующее сообщение.

Таким образом, есть несколько подходов к проверке запущенных процессов. Вы можете использовать команды системы, такие как tasklist или ps, или использовать соответствующие библиотеки в своей программе. Выберите подход, который наиболее удобен и подходит для вашей ситуации.

Рассмотрим, как с помощью PowerShell проверить, запущено ли определенное приложение или процесс, как автоматически перезапустить его при сбое, если его случайно закрыл пользователь или он стал утекать (использовать слишком много оперативной памяти).

Ранее мы показывали, как с помощью PowerShell можно управлять процессами Windows. Чтобы проверить, запущен ли процесс notepad.exe и перезапустить его, можно использовать такой скрипт.

If (!(Get-Process -Name notepad -ErrorAction SilentlyContinue))
{Invoke-Item C:\Windows\notepad.exe

}

Можно автоматически перезапустить процесс, если он не отвечает (завис) или если он стал использовать слишком много оперативной памяти (в этом примере более 500 Мб):

$proc = Get-Process -Name notepad| Sort-Object -Property ProcessName -Unique
If (($proc.Responding -eq $false) –or ($proc.WorkingSet -GT 500000*1024)) {
$proc.Kill()
Start-Sleep -s 10
Invoke-Item C:\Windows\notepad.exe
}

С помощью for можно сделать бесконечный цикл, который запускает процесс, каждые 60 секунд проверяет что он запущен и перезапускает его, если нужно:

for(;;)
{

try
{
If (!(Get-Process -Name notepad -ErrorAction SilentlyContinue))
{Invoke-Item C:\Windows\notepad.exe
}
$proc = Get-Process -Name notepad | Sort-Object -Property ProcessName -Unique -ErrorAction SilentlyContinue
If (!$proc -or ($proc.Responding -eq $false) –or ($proc.WorkingSet -GT 200000*1024)) {
$proc.Kill()
Start-Sleep -s 10
Invoke-Item C:\Windows\notepad.exe
}
}
catch
{
}
Start-sleep -s 60
}

powershell как перезапустить процесс или приложение, если его закрыли или оно зависло

Если нужно проверить состояние процесса на удаленных компьютерах, можно использовать команду:

$proc = Get-Process -ComputerName PC01 -Name notepad | Sort-Object -Property ProcessName -Unique -ErrorAction SilentlyContinue

Для удаленного запуска процесса можно использовать Invoke-Command:

Invoke-Command -ComputerName PC01 -Credential $Cred -ScriptBlock {Start-Process C:\Windows\notepad.exe -wait -verb runas;}

Вы можете запустить этот PowerShell скрипт в виде логон скрипта GPO при входе пользователя.

В этом случае нужно сохранить PowerShell код в файле с расширением PS1. Можно подписать этот скрипт цифровой подписью, изменить настройки политики запуска PowerShell скриптов, или запускать его с параметром
–ExecutionPolicy Bypass
.

  • Имя запускаемого файла:
    %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • Параметры запуска:
    -windowstyle hidden -ExecutionPolicy Bypass –Noprofile -file %~dp0CheckProcess.ps1

Также можно запускать PS1 скрипт по расписанию с помощью задания планировщика. Используйте аналогичные параметры запуска. Дополнительно можно указать учетную запись пользователя, от имени которого запускать процесс.

$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-windowstyle hidden -ExecutionPolicy Bypass -file %windir%\CheckProcess.ps1"
$Trigger= New-ScheduledTaskTrigger -AtLogon
$Principal=New-ScheduledTaskPrincipal -UserId "aaivanov" -LogonType Interactive
$Task=New-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal
Register-ScheduledTask -TaskName "Check Notepad Process" -InputObject $Task

Либо этот PowerShell скрипт можно запускать в виде службы Windows

Если в запущенном приложении не требуется взаимодействие с пользователем, лучше всего запускать его в виде службы. В дальнейшем вы можете управлять этой службой через стандартную консоль services.msc или через PowerShell. В Windows есть встроенный функционал перезапуска служб либо вы можете перезапускать зависшую службу так.

  • Проверить свой пк на совместимость с windows 11
  • Пробел в имени пользователя windows 10
  • Проверить права на папку windows
  • Пробелы в пути к файлу windows
  • Проверить загруженность оперативной памяти в windows 10 как