В современных операционный системах семейства Windows можно динамически изменить приоритет процессов, чтобы таким образом управлять загрузкой процессора. Самый простой пример — какое-то приложение перегружает систему. Вы можете снизить приоритет этой программы, а важные задачи при этом, наоборот — ускорить.
▪️ Просмотр приоритетов процессов. Для того, чтобы увидеть текущие приоритеты всех запущенных процессов в ОС Windows 11, выполните команду:
Get-WmiObject Win32_Process | Select-Object Name, ProcessId, Priority | Sort-Object Priority -Descending
Приоритет отображается числом:
256 — Реального времени (RealTime)
128 — Высокий (High)
32 — Выше нормального (AboveNormal)
8 — Обычный (Normal)
4 — Ниже нормального (BelowNormal)
1 — Фоновый (Idle)
▪️ Изменение приоритета процесса. Чтобы повысить приоритет процесса (например, notepad.exe) до Высокого (High), нужно выполнить такую команду:
(Get-Process notepad).PriorityClass = "High"
Если процессу нужно снизить нагрузку, до «Ниже нормального» (BelowNormal), выполните такую команду:
(Get-Process notepad).PriorityClass = "BelowNormal"
▪️ Изменение приоритета по PID. Если вы знаете идентификатор процесса (PID), то можно изменить его приоритет напрямую:
(Get-Process -Id 1234).PriorityClass = "AboveNormal"
▪️ Автоматическое изменение приоритета. Вы всегда можете сделать PowerShell-скрипт, который будет снижать приоритет ресурсоёмких процессов. Пример lkz chrome.exe:
$processes = Get-Process chrome -ErrorAction SilentlyContinue if ($processes) { $processes | ForEach-Object { $_.PriorityClass = "BelowNormal" } }
Далее просто добавим этот скрипт в Планировщик заданий (Task Scheduler), чтобы он запускался автоматически при старте системы.
▪️ Изменение приоритета через WMI. Если Get-Process не срабатывает, можно использовать WMI:
(Get-WmiObject Win32_Process -Filter "Name='notepad.exe'").SetPriority(128)
Здесь 128 — это High, 8 — Normal, 4 — BelowNormal и т. д.