Руководство по настройке Wake-on-LAN с помощью PowerShell, в котором рассматриваются основные команды и способы решения типичных проблем, возникающих из-за различий в драйверах сетевых адаптеров.
Шаг 1: Идентификация устройства.
Прежде чем настраивать Wake-on-LAN (WOL) для сетевого адаптера, нужно точно определить, с каким устройством мы работаем. Для этого используем команду PowerShell, которая ищет устройства по части имени (например, «Realtek» или «Intel»).
Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId
!(../assets/manage-wol/1.png)
Эта команда говорит системе:
«Покажи мне все устройства, в названии которых есть слово «Realtek», и выведи по ним таблицу с четырьмя колонками: полное имя, статус, класс и системный ID.»
Get-PnpDevice: Берет полный список всех Plug-and-Play устройств.|(Конвейер): Передает список дальше.Where-Object { ... }: Фильтрует список, оставляя устройства, чье имя (FriendlyName) содержит «Realtek».|(Конвейер): Передает отфильтрованный список.Select-Object ...: Форматирует вывод, показывая только нужные свойства.
Находим нужное устройство и берем первое из списка
$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object -First 1
*Записываем его свойства в переменные*
$DeviceName = $device.FriendlyName
$InstanceId = $device.InstanceId
$pmKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId\Device Parameters"
Шаг 2: Глобальное разрешение на пробуждение
Команда powercfg дает устройству «официальное» разрешение от Windows на пробуждение системы.
powercfg -deviceenablewake $DeviceName
Эта команда эквивалентна установке флажка «Разрешить этому устройству выводить компьютер из ждущего режима».
Ее обратное действие — отключение:
powercfg -devicedisablewake $DeviceName
Шаг 3: Настройка драйвера.
Настройки WOL находятся в параметрах самого драйвера, которые хранятся в реестре. Чтобы установить флажок «Только разрешать магическому пакету выводить компьютер из ждущего режима», используем команду Set-ItemProperty.
# Устанавливаем свойство Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 1
Обратное действие — отключение WOL (Value 0):
Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 0
Проблема Имя этого параметра может отличаться у разных производителей. Например, для Intel это
*WakeOnMagicPacket, а для Realtek —WakeOnMagicPacket(без*). Если настройка не применяется, проверьте правильное имя командойGet-ItemProperty -Path $pmKeyи используйте его.
Шаг 4: Завершающая настройка через CIM
Для полной уверенности в том, что настройки управления питанием применены корректно, используем современный стандарт CIM (Common Information Model).
# Находим CIM-объект, связанный с нашим устройством
$adapterCim = Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable | Where-Object { $_.InstanceName -like "*$($instanceId.Split('\')[-1])*" }
# Применяем к нему изменения
if ($adapterCim) {
Set-CimInstance -CimInstance $adapterCim -Property @{ Enable = $true }
}