single.php

ポートを指定してWake On LANのマジックパケットをバッチファイルで送信する

電源オフ(休止状態も含む)状態から、ネットワーク内の別デバイスから起動する(Wake On LAN)ための専用パケットはアプリを使わずに、バッチファイルからでも送信することができます。今回は別記事「Wake On LANのマジックパケットをバッチファイルで送信する」のルーターを突破するための改良版です。

この方法は、PowerShellのスクリプトを使うので、完全バッチファイルでは実現できないので、あらかじめご了承ください。

Wake On LAN

LAN上の他デバイスから電源オフの状態からパソコンを起動させることができる「Wake On LAN」。

常時電源オンになっていないパソコンを離れた場所にあるパソコンを起動してリモート接続して使いたい場合などに便利な機能です。

その仕組みは、マジックパケットと呼ばれる専用のパケットをネットワーク内に配信して、パソコンの電源を回復させます。そのためマザーボードが対応している必要があります。

マジックパケットの送信

通常は「Wake On LAN」用のアプリを使って起動することが多いですが、PowerShellのスクリプトを使って送信することもできます。PS1ファイルで送信する場合は、別記事をご覧ください。

このPowerShell用のスクリプトをバッチファイルなどから呼び出すことで、ファイルをダブルクリックするだけでマジックパケットを送信できるようになります。

具体的な手順は

1. メモ帳を起動して、次の内容をコピーします。

@echo off
powershell "$port=9999;$macAddr=[byte[]]("""XX-XX-XX-XX-XX-XX""".split("""-""") | ForEach-Object{[Convert]::ToInt32($_, 16)});$magicPacket=([byte[]](@(0xff)*6)) + $macAddr * 16;$udpClient=new-object System.Net.Sockets.UdpClient($port);$WakeUpTarget=[System.Net.IPAddress]::Broadcast;$udpClient.Connect($WakeUpTarget, 9);$udpClient.Send($magicPacket, $magicPacket.Length)|out-null;$udpClient.Close();"
pause
exit /b 0

[XX-XX-XX-XX-XX-XX]の部分には、起動するコンピューターのMACアドレスを入力します。

先回のスクリプトとの違いは、$port変数で送信ポート先を指定してUDPとして送信するように変更しています。

2.[ファイル|名前を付けて保存]メニューを選択します。

3. 表示された[名前を付けて保存]画面で 拡張子(.bat)で保存します。

4. 保存したファイルを実行します。

休止状態(または電源オフ状態)の対象パソコンの電源が復帰することができれば、操作は終了です。

ルーターを越えないLAN内で使う場合にはポートを指定する必要がないので、別記事のスクリプトでWOLを利用することができます。

powershell 以降のスクリプト内容については、別記事をご覧ください。

まとめ

PowerShellスクリプトをバッチファイルから呼び出すことで、専用アプリを使わなくてもWake On LANで必要なマジックパケットを送信することができます。

ルーターを越えてマジックパケットを送信する場合、ファイヤーウォールやブロードキャストなどの設定をする必要がありますが、ポートを指定してマジックパケットを送信する方法を使えば、ルーターを越えて起動することも可能です。

YAMAHA製のNVRなどの高機能ルーターの場合には、スクリプトを使わずにコマンドレベルで対応しているので、そちらを利用するのもおススメです。

NVR510でWOLを利用する方法については別記事をご覧ください。

その他に出先のパソコンや、アプリのインストールが制限されているような場合に、簡単なスクリプトでWake On LAN機能を利用することができるようになります。

次回はルーター側のブロードキャストやルーティング設定について紹介していきます。

Wake On LANの専用アプリで迷っている方の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です