ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 марта
1501754 Топик полностью
LordNфилософ (27.02.2025 10:19, просмотров: 102) ответил LordN на а без павершелла это как-нить можно сделать? помнится мне тут рисовали скрипт для перезапуска демоскады, на vbs вроде.
пробую 

Для автоматизации перезапуска системной службы в Windows 10 Pro на основе условия, что загрузка процессора достигает 100% и не уменьшается в течение определенного периода времени, можно использовать **Task Scheduler** (Планировщик заданий) в сочетании с **Batch-файлом** и **встроенными инструментами Windows**. Вот пошаговая инструкция:

---

### 1. Создайте Batch-файл для перезапуска службы

Создайте текстовый файл с расширением `.bat`, например, `restart_service.bat`. Внутри файла добавьте команды для остановки и запуска службы. Например:

```batch

@echo off

net stop "Имя_службы"

timeout /t 5 /nobreak >nul

net start "Имя_службы"

```

Замените `"Имя_службы"` на имя службы, которую нужно перезапустить. Например, для службы `Spooler` (служба печати) команды будут выглядеть так:

```batch

@echo off

net stop "Spooler"

timeout /t 5 /nobreak >nul

net start "Spooler"

```

Сохраните файл, например, в `C:\Scripts\restart_service.bat`.

---

### 2. Создайте скрипт для мониторинга загрузки процессора

Создайте еще один Batch-файл, например, `monitor_cpu.bat`, который будет проверять загрузку процессора и вызывать `restart_service.bat`, если загрузка достигает 100% в течение определенного времени.

```batch

@echo off

set SERVICE_NAME=Имя_службы

set THRESHOLD=100

set DURATION=60

:CHECK_CPU

for /f "skip=1 tokens=2" %%p in ('wmic cpu get loadpercentage') do (

if %%p GEQ %THRESHOLD% (

set /a COUNTER+=1

if %COUNTER% GEQ %DURATION% (

call "C:\Scripts\restart_service.bat"

set COUNTER=0

)

) else (

set COUNTER=0

)

)

timeout /t 5 /nobreak >nul

goto CHECK_CPU

```

- `SERVICE_NAME` — имя службы.

- `THRESHOLD` — порог загрузки процессора (в данном случае 100%).

- `DURATION` — время (в секундах), в течение которого загрузка процессора должна оставаться на 100%, чтобы скрипт сработал.

- `COUNTER` — счетчик для отслеживания времени.

Сохраните файл, например, в `C:\Scripts\monitor_cpu.bat`.

---

### 3. Настройте Планировщик заданий (Task Scheduler)

1. Откройте Планировщик заданий (`taskschd.msc`).

2. Создайте новое задание:

- На вкладке **Общие** укажите имя задачи, например, `Monitor CPU and Restart Service`.

- Выберите **Запускать для всех пользователей**.

- Поставьте галочку **Выполнить с наивысшими правами**.

3. На вкладке **Триггеры** создайте новый триггер:

- Выберите **При запуске**.

- Поставьте галочку **Отложить задачу на** и укажите, например, 1 минуту.

4. На вкладке **Действия** создайте новое действие:

- Выберите **Запуск программы**.

- В поле **Программа или сценарий** укажите путь к `monitor_cpu.bat`, например, `C:\Scripts\monitor_cpu.bat`.

5. На вкладке **Условия** убедитесь, что галочки **Запускать только при питании от электросети** и **Пробуждать компьютер для выполнения задачи** сняты.

6. На вкладке **Параметры** поставьте галочку **Выполнять задачу сразу, если пропущен плановый запуск**.

---

### 4. Запустите задачу

1. Сохраните задачу и закройте Планировщик заданий.

2. Перезагрузите компьютер или запустите задачу вручную через Планировщик заданий.

---

### Примечания:

- Убедитесь, что у вас есть права администратора для выполнения этих действий.

- Если загрузка процессора часто достигает 100%, это может указывать на проблему с производительностью системы или конкретной службой. Рекомендуется провести диагностику.

- Для более сложных сценариев можно использовать сторонние инструменты мониторинга, такие как **Zabbix** или **Nagios**, но это выходит за рамки данного решения.

Теперь ваша система будет автоматически перезапускать указанную службу, если загрузка процессора достигает 100% и не уменьшается в течение заданного времени.

ЛН