使用 PowerShell 或 批处理(BAT) 来写一个简单的 Wake-on-LAN(WOL) 脚本,唤醒同一局域网内的电脑。

System Administration · Network Tweak

局域网 Wake-on-LAN (WOL) 远程唤醒脚本指南

使用原生 PowerShell 或经典 BAT 批处理唤醒局域网内的 Windows / 睡眠设备
⚡ 前置环境与准备工作
  1. 主板 BIOS 开启 WOL:开机进入主板设置,开启 Wake on LAN / PCI-E 设备唤醒 / 网络唤醒 等选项。
  2. 网卡驱动开启唤醒:进入设备管理器 → 网络适配器 → 右键网卡属性 → 在「高级」中启用「魔术封包唤醒 (Wake on Magic Packet)」;在「电源管理」中勾选「允许此设备唤醒计算机」。
  3. 获取目标设备物理地址:在目标设备运行命令提示符输入 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 极简双击 · 兼容全版本

操作步骤:

  1. 下载单文件工具 WolCmd.exe
  2. 解压并放置在 C:\WOL\WolCmd.exe 路径下;
  3. 在同目录新建 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)或日常运维工作流中。

NETWORK & AUTOMATION SCRIPT ARCHIVE · WAKE-ON-LAN GUIDE