タグ「LAN」が付けられているもの

固定IPを使用するLANの中で、今どのIPアドレスが空いているか適当にpingを打ってみることがありますが、連続して応答が返ってくるとちょっと疲れます。1~254まで全部手動で行うのは面倒なので、コマンドの例を探したらありましたのでメモ。

コマンドプロンプトの例

例えば、192.168.0.2~192.168.0.10を調べる場合

指定した範囲でpingarpを連続で打つコマンドです。

for /l %i in (2,1,10) do ping -w 1 -n 1 192.168.0.%i && arp -a 192.168.0.%i

最初の(2,1,10)は変数「%i」を2から10まで1ずつ加算していくことを表しています。

結果のログをテキストファイルで残す場合

コマンドの後ろに>> result.txtなど任意のファイル名を記載します。

for /l %i in (2,1,254) do ping -w 1 -n 1 192.168.0.%i && arp -a 192.168.0.%i >> result.txt

上記のようにファイル名のみ指定すると、ファイルの保存先はコマンドを実行したディレクトリに保存されます。(ほとんどの場合、ユーザーフォルダ)

分かりやすい場所に保存する場合はd:\result.txtなど、任意のディレクトリに変更します。

バッチファイルを作る場合

このコマンドをバッチファイルにする場合は、3カ所ある「%i」「%%i」にして「.bat」の拡張子を付けた名前で保存します。

for /l %%i in (2,1,254) do ping -w 1 -n 1 192.168.0.%%i && arp -a 192.168.0.%%i >> result.txt

結果について

応答があったもののみがテキストファイルに出力されていますので、ここにないIPアドレスが空いているということになりますが、たまたま電源が入っていない機器も含まれるので注意が必要です。

PowerShellのスクリプトの例

こちらはPowerShell192.168.0.1~192.168.0.255まで連続でpingを送信するスクリプトです。以下のスクリプトをPowerShellに貼り付けるか、メモ帳で「.ps1」という拡張子を付けて保存します。

$date = Get-Date -Format _yyyy_MMdd_HHmmss
for ($i = 1; $i -lt 255; $i++) {
        ping 192.168.0.$i >> pinglog$date.txt
}

実行すると、実行結果の入ったテキストファイルが「pinglog_2016_1127_092028.txt」のようなファイル名で実行ディレクトリに保存されます。

Windows7からWindows8にアップグレードしてからというもの、起動時にLANの認識よりも先にネットワークドライブの再接続をしているみたいで、いつも『ネットワークドライブの接続に失敗しました』とバルーンメッセージが表示されます。当然、起動直後はネットワークドライブが切断されたままの状態になっています。

iTunesで使用する音楽や、Lightroomで使う写真はすべてNASに入れており、一度マイコンピュータからネットワークドライブを開いてからアプリケーションを起動しないと、フォルダが見当たらないということで、フォルダ設定がデフォルトに戻ってしまいます。毎度設定を戻すのが面倒です。

できれば、LANの認識が終わってからネットワークドライブの再接続をして欲しいのですが、その方法が今のところ見当たりません。しかし、応急的な対応ですがネットワークドライブにあらかじめアクセスするWSH(Windows Script Host)というスクリプトファイルをタスクスケジュールやスタートアップで起動時に実行することで解消できるようです。

方法

以下の内容をテキストエディタで『netDrvCon.vbs』など拡張子を『.vbs』にして保存します。

WSH(Windows Script Host)

On Error Resume Next

'10秒遅延させる
WScript.sleep 10000

'ネットワークオブジェクトの作成
Set objNetwork = CreateObject("WScript.Network")

'接続するネットワークドライブ
'objNetWork.MapNetworkDrive "[ドライブレター]:", "[共有フォルダのパス]"
objNetWork.MapNetworkDrive "W:", "\\NAS\Video"
objNetWork.MapNetworkDrive "X:", "\\NAS\Music"
objNetWork.MapNetworkDrive "Y:", "\\NAS\Photo"

このファイルを起動後にダブルクリックして切断されていたネットワークドライブが接続状態になっていることを確認できたら、あとはタスクスケジュールやスタートアップに登録するだけでOK。

今回は10秒くらいの待ち時間にしましたが、環境によってはもう少し短い待ち時間にしてもうまくいくかもしれません。ちなみにスタートアップフォルダは以下の場所です。AppDataは隠しフォルダで、フォルダオプションで隠しフォルダを表示できるように設定してからでないと見えないので注意してください。

スタートアップフォルダの場所

C:\ユーザー\[ユーザー名]\AppData\Roaming\Microsoft\Windows\スタート メニュー\プログラム\スタートアップ

しかし、こんな小細工して使わなければならないOSがちょっと残念。起動時のLANの認識が遅いのを早くする方法や、ネットワークドライブの接続を遅らせる方法もあれば探してみたいと思います。

その他

上記のWSH(Windows Script Host)を使った方法以外に管理コンソールを使用する方法もあるようです。

NET USEコマンドを使った方法

結論から言いますとネットワークアダプター(NIC)のドライバーをWindows8用に更新してみましょう!

外出先から自宅や会社のパソコンの電源が切れていても、遠隔操作で電源を入れるように自分が使うパソコンはすべてWake On LAN(WOL)の設定をしています。テレビでいうスタンバイ状態。

Windows7からWindows8 Proにアップグレードして数日後、Wake On LAN(WOL)で自宅PCを外から電源ONできないことに気が付きました。アップグレードの前後で特に設定を変更していませんが、BIOSの設定を見直しても特に変わったところはありませんでした。インターネットも普通にできているので、原因が特定できませんでした。

思い当たる節があるとすれば、Windows8にアップグレードの際、現在のドライバーは「Windows8に対応していません。」みたいな警告が出たので、ドライバーを削除したことを思い出しました。ドライバーは削除しましたが、アップグレード後にWindows8が標準のドライバーでネットワークアダプタを自動認識していたので、インターネットも普通にできるしなぁ~と、疑ってはいなかったのですが、念のためネットワークアダプタのプロパティを確認したところWake On LAN(WOL)に関する項目が全くありませんでした。

設定項目があったからWindows7のときも、その前のXPの時もWake On LAN(WOL)ができていたわけなんで、設定項目がないのはおかしい!ということで、ドライバーを検索してみました。

デバイスマネージャ

デバイスマネージャで確認したところ、ネットワークアダプタはIntel 82578DC Gigabit Network Connectionだったので、「Intel 82578 ドライバー」と検索したら、Windows8用のドライバーダウンロードページがヒットしました。

さっそく64ビット版をダウンロードしてインストールしました。念のため再起動してネットワークアダプタのプロパティを見ると、設定項目のタブが増えているし、Wake On LAN(WOL)に関する項目が出てきました。しかも、わかりやすい日本語で!『Wake on Link設定』の項目にチェックが入っていなかったので、チェックしてOKして、パソコンをシャットダウンしました。

ネットワークアダプタのプロパティ

そしてiPhoneのマジックパケット送信アプリから電源ONすると、パソコンが起動しはじめました!

iRPM - リモートパワーマネージャ

とりあえず解決。

VNC

Windows7とWindows8は見かけが変わっただけで、中身は同じ物と思っていましたが、違うんですね...。他にも今まで正常にできていたことが、アップグレード後に動かなくなった場合はドライバーをWindows8用に更新してると解決できるかもしれませんね。

 

ドライバーを更新してもダメな場合は以下の設定を行ってみてください。