0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsでMagic Packetを送信してWake-on-LANを使う方法

Wake-on-LAN(WOL)を利用すると、ネットワーク経由でPCの電源を投入できます。

展示用PCやサーバー、リモートアクセス用PCなどを必要な時だけ起動したい場合に便利です。

今回は Windows から Magic Packet を送信する方法をまとめます。

Wake-on-LANとは

Wake-on-LAN(WOL)は、LAN上に送信された Magic Packet を受信することで、スリープ中やシャットダウン状態のPCを起動する仕組みです。

PCのネットワークアダプタは待機電力で動作し続けており、自身のMACアドレス宛のMagic Packetを受信するとシステムを起動します。


事前準備

対象PC側でWake-on-LANを有効にしておく必要があります。

BIOS / UEFI

以下のような項目を有効化します。

Wake on LAN
Power On By PCI-E
Resume By LAN

マザーボードによって名称は異なります。

Windowsの設定

デバイスマネージャーを開き、

ネットワークアダプター
↓
対象NIC
↓
プロパティ

電源の管理

☑ このデバイスでコンピューターのスタンバイ状態を解除できるようにする
☑ Magic Packetでのみコンピューターのスタンバイ状態を解除できるようにする

詳細設定

Wake on Magic Packet → Enabled

PowerShellでMagic Packetを送信する

追加ソフトを入れなくても、PowerShellだけでMagic Packetを送信できます。

$mac = "00-11-22-33-44-55"
$broadcast = "192.168.1.255"
$port = 9

$macBytes = ($mac -split "[:-]" | ForEach-Object { [byte]("0x$_") })
$packet = (,0xFF * 6) + ($macBytes * 16)

$udp = New-Object System.Net.Sockets.UdpClient
$udp.EnableBroadcast = $true
$udp.Connect($broadcast, $port)
$udp.Send($packet, $packet.Length)
$udp.Close()

実行するとUDPポート9へMagic Packetが送信されます。


毎回使うならスクリプト化がおすすめ

毎回PowerShellコードを書くのは面倒なので、wol.ps1 として保存しておくと便利です。

wol.ps1

param(
    [Parameter(Mandatory=$true)]
    [string]$MacAddress,

    [string]$Broadcast = "255.255.255.255",

    [int]$Port = 9
)

$macBytes = ($MacAddress -split "[:-]" | ForEach-Object {
    [byte]("0x$_")
})

$packet = (,0xFF * 6) + ($macBytes * 16)

$udp = New-Object System.Net.Sockets.UdpClient
$udp.EnableBroadcast = $true
$udp.Connect($Broadcast, $Port)
[void]$udp.Send($packet, $packet.Length)
$udp.Close()

Write-Host "Magic Packet sent to $MacAddress via $Broadcast`:$Port"

実行方法

MACアドレスを指定して実行します。

powershell -ExecutionPolicy Bypass -File .\wol.ps1 00-11-22-33-44-55

ブロードキャストアドレスを指定する場合は、

powershell -ExecutionPolicy Bypass -File .\wol.ps1 00-11-22-33-44-55 -Broadcast 192.168.1.255

とします。

実行結果:

Magic Packet sent to 00-11-22-33-44-55 via 192.168.1.255:9

トラブルシューティング

起動しない

以下を確認してください。

  • MACアドレスが正しいか
  • BIOSでWake-on-LANが有効か
  • NICでWake on Magic Packetが有効か
  • 有線LAN接続か
  • スイッチやルーターがブロードキャストを遮断していないか

スリープからは起きるがシャットダウンから起きない

マザーボードによっては

ErP
Deep Sleep
S5 Power Saving

などの省電力機能が影響する場合があります。


おわりに

GUIツールもありますが、PowerShellだけでMagic Packetを送信できるので、展示システムや運用スクリプトへの組み込みにも便利です。

私は展示用PCを遠隔起動する用途で利用していますが、1本スクリプトを用意しておくと意外と重宝します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?