自动网络唤醒脚本

# 配置区域
$TargetMac = "00-55-7B-B5-7D-F7"  # Android设备的MAC地址,用减号分隔
$TargetIP = "172.20.20.111"       # Android设备的IP(用于检测何时关机)
$BroadcastIP = "172.20.20.255"    # 局域网广播地址
$WaitMilliseconds = 500         # 关机后等待多少毫秒发送唤醒包(在这里修改 7000, 8000, 10000 进行测试)

# 定义发送 Magic Packet 的函数
function Send-WOL {
    param (
        [string]$MacAddress,
        [string]$BroadcastAddress
    )
    $MacByteString = $MacAddress -split "[:-]" | ForEach-Object { [byte]('0x' + $_) }
    $MagicPacket = [byte[]](,0xFF * 6) + ($MacByteString * 16)
    $UdpClient = New-Object System.Net.Sockets.UdpClient
    $UdpClient.Connect($BroadcastAddress, 9)
    $UdpClient.Send($MagicPacket, $MagicPacket.Length)
    $UdpClient.Close()
    Write-Host ">>> Magic Packet 发送完毕!" -ForegroundColor Green
}

# 主流程
Write-Host "开始测试..." 
Write-Host "请手动对Android设备执行关机,或者通过ADB执行关机..."

# 1. 循环检测设备是否已断网 (Ping不通视为关机开始)
while ($true) {
    if (Test-Connection -ComputerName $TargetIP -Count 1 -Quiet) {
        Write-Host "设备在线,等待关机..." -NoNewline
        Start-Sleep -Milliseconds 500
    } else {
        Write-Host "`n设备已离线 (Ping不通),计时开始!" -ForegroundColor Yellow
        break
    }
}

# 2. 等待指定的“死亡时间”
Write-Host "正在等待 $WaitMilliseconds 毫秒..."
Start-Sleep -Milliseconds $WaitMilliseconds

# 3. 发送唤醒包
Send-WOL -MacAddress $TargetMac -BroadcastAddress $BroadcastIP

Write-Host "测试结束。请观察设备是否重启,或指示灯状态。"

posted @ 2025-11-26 19:11  jarico  阅读(3)  评论(0)    收藏  举报