System Administration · Network Tweak
局域网 Wake-on-LAN (WOL) 远程唤醒脚本指南
使用原生 PowerShell 或经典 BAT 批处理唤醒局域网内的 Windows / 睡眠设备
⚡ 前置环境与准备工作
- 主板 BIOS 开启 WOL:开机进入主板设置,开启
Wake on LAN/PCI-E 设备唤醒/网络唤醒等选项。 - 网卡驱动开启唤醒:进入设备管理器 → 网络适配器 → 右键网卡属性 → 在「高级」中启用「魔术封包唤醒 (Wake on Magic Packet)」;在「电源管理」中勾选「允许此设备唤醒计算机」。
- 获取目标设备物理地址:在目标设备运行命令提示符输入
ipconfig /all,记录其「物理地址(MAC 地址)」,格式如XX-XX-XX-XX-XX-XX。
方案 1:PowerShell 原生脚本(推荐)
适用于 Windows 10 / Windows 11 及更高版本。无需安装任何第三方工具,利用 .NET 原生 UDP 套接字组装并广播标准的魔术包(Magic Packet,即 6 字节的 0xFF 拼接 16 次目标 MAC 地址)。
WakeOnLAN.ps1
100% 原生 · 无依赖
保存为 WakeOnLAN.ps1,右键选择「使用 PowerShell 运行」即可:
# 1. 目标设备的 MAC 地址(替换为你自己的设备 MAC)
$macAddress = "XX-XX-XX-XX-XX-XX"
# 2. 局域网广播地址与默认 WOL 端口(一般为 7 或 9)
$broadcast = "255.255.255.255"
$port = 9
# 3. 将 MAC 地址解析并转换为二进制格式
$macBytes = ($macAddress -split '[:-]') | ForEach-Object { [byte]("0x$_") }
# 4. 构建魔术包:6 个 0xFF + 16 次重复的 MAC 字节
[byte[]]$packet = (,0xFF * 6) + ($macBytes * 16)
# 5. 通过 UDP 广播唤醒魔术包
$udpClient = New-Object System.Net.Sockets.UdpClient
$udpClient.Connect($broadcast, $port)
$udpClient.Send($packet, $packet.Length) | Out-Null
$udpClient.Close()
Write-Output "唤醒包已成功发送到目标设备:$macAddress"
方案 2:BAT 批处理脚本(搭配 WolCmd 工具)
如果你希望在任意旧版本 Windows 上双击即用,可以使用成熟的单文件命令行工具 WolCmd.exe。
wake.bat
极简双击 · 兼容全版本
操作步骤:
- 下载单文件工具 WolCmd.exe;
- 解压并放置在
C:\WOL\WolCmd.exe路径下; - 在同目录新建
wake.bat,粘贴下方代码,将 MAC 替换为目标设备的地址:
@echo off
:: WolCmd 语法:WolCmd.exe [目标MAC] [IP地址/广播地址] [子网掩码] [端口]
C:\WOL\WolCmd.exe XX-XX-XX-XX-XX-XX 192.168.1.255 255.255.255.0 9
echo 唤醒指令已发送!
pause
两种方案横向对比
| 实现方案 | 是否需要下载工具 | 系统兼容性 | 易用度与推荐人群 |
|---|---|---|---|
| PowerShell 原生脚本 | 否(纯系统自带) | Windows 10 / 11+ | 推荐。适合不想安装外部未知工具的极客/脚本用户。 |
| 批处理 (BAT) + WolCmd | 是(需要单独下载 EXE) | 兼容 Windows XP 到最新版 | 适合旧系统或希望做成纯一键快捷方式的普通用户。 |
💡 极客建议:
在现代 Windows 环境下,首选方案 1(PowerShell),既保持了纯净免装外部文件的优势,又便于将代码集成进自动化任务计划(Task Scheduler)或日常运维工作流中。