Windows系统如何一键发送WOL魔术数据包唤醒局域网设备
Windows平台一键WOL唤醒方案
方案1:纯PowerShell原生脚本(无需第三方工具)
你之前遇到的「物理地址无效」报错是因为原脚本未做MAC地址格式兼容,以下脚本可自动处理带冒号、横杠分隔符的MAC地址:
自定义MAC通用脚本
将以下内容保存为WakeOnLAN.ps1:
param( [Parameter(Mandatory=$true)] [string]$MacAddress, [string]$BroadcastIP = "255.255.255.255", [int]$Port = 9 ) # 自动清理MAC地址分隔符 $cleanMac = $MacAddress -replace '[:-]', '' if ($cleanMac.Length -ne 12) { Write-Error "MAC地址格式错误,请输入12位十六进制物理地址" exit 1 } # 构造WOL魔术包:6个FF + 重复16次的MAC地址 $magicPacket = [byte[]]@(0xFF)*6 + [byte[]]($cleanMac -split '(..)' | Where-Object { $_ } | ForEach-Object { [Convert]::ToByte($_, 16) })*16 # 发送UDP广播包 $udpClient = New-Object System.Net.Sockets.UdpClient $udpClient.Connect($BroadcastIP, $Port) $udpClient.Send($magicPacket, $magicPacket.Length) | Out-Null $udpClient.Close() Write-Host "魔术包已发送至 $MacAddress ,设备将在数秒后唤醒"
运行时在PowerShell中执行:.\WakeOnLAN.ps1 -MacAddress 你的设备MAC地址即可。
固定MAC一键运行版本
如果仅需要唤醒固定设备,直接把MAC写死为你目标设备的地址,存为ps1文件即可直接运行:
# 替换下方的MAC地址为你需要唤醒的设备地址 $MacAddress = "AA:BB:CC:DD:EE:FF" $cleanMac = $MacAddress -replace '[:-]', '' $magicPacket = [byte[]]@(0xFF)*6 + [byte[]]($cleanMac -split '(..)' | Where-Object { $_ } | ForEach-Object { [Convert]::ToByte($_, 16) })*16 $udpClient = New-Object System.Net.Sockets.UdpClient $udpClient.Connect("255.255.255.255",9) $udpClient.Send($magicPacket, $magicPacket.Length) | Out-Null $udpClient.Close()
方案2:封装为批处理文件(双击直接运行,无需修改PowerShell执行策略)
不想调整PowerShell安全策略的话,直接把以下内容保存为一键唤醒.bat,替换内部MAC地址后双击即可运行:
@echo off :: 替换下方引号内的MAC地址为目标设备地址 powershell -Command "$MacAddress = 'AA:BB:CC:DD:EE:FF'; $cleanMac = $MacAddress -replace '[:-]', ''; $magicPacket = [byte[]]@(0xFF)*6 + [byte[]]($cleanMac -split '(..)' | Where-Object { $_ } | ForEach-Object { [Convert]::ToByte($_, 16) })*16; $udpClient = New-Object System.Net.Sockets.UdpClient; $udpClient.Connect('255.255.255.255',9); $udpClient.Send($magicPacket, $magicPacket.Length) | Out-Null; $udpClient.Close()" echo 唤醒指令已发送 pause
注意事项
- 目标设备需要提前在BIOS和系统网卡设置中开启WOL功能
- 跨网段唤醒时,把广播地址替换为对应网段的广播地址,例如
192.168.1.255 - 部分路由器默认拦截UDP广播包,遇到发送后无响应的情况可检查路由器配置
内容的提问来源于stack exchange,提问作者Titus
相关产品推荐
相关产品推荐

