WindowsでVPNの自動再接続を行う
Windowsの起動時に自動的にVPN接続をするという形で起動時に自動的にVPNへ接続できるようにしたわけですが、なぜか1日経つとVPN接続が切れてしまうので再接続を行えるようにしました。
バッチファイルとPowerShellスクリプトとタスクスケジューラを組み合わせてるんですが、なんか簡単な方法ないですかね…。
以下設定メモ
まずは前回のコマンドを記録したVPNに接続を行うバッチファイルを作成します。C:\vpn\vpn.batに保存してあります。ネットワーク名は「RaspberryPi」にしてあります。
@echo off start RasDial "RaspberryPi" %ユーザー名% %パスワード%
ちなみにPowerShellで同じコマンド打ってもエラーが出て接続してくれませんでした。
次にVPNに接続しているかどうかを確認して、接続がなかった場合VPNの接続を行うバッチファイルを呼び出すPowerShellスクリプトを書きます。C:\vpn\vpn.ps1に保存しました。
$A = ipconfig | Select-String RaspberryPi if($A.length -eq "0"){ C:\vpn\vpn.bat }else{ echo "OK" }
ipconfigに「RaspberryPi」というネットワーク名が無ければVPNに接続していないので、「ipconfig | Select-String RaspberryPi」のlengthが「0」になります。
「0」が返ってきたらC:\vpn\vpn.batを実行すればVPNの接続が完了です。
次にタスクスケジューラを使って、30分ごとにvpn.ps1を呼び出す設定をします。
タスクスケジューラのプログラムにPowerShellスクリプトを直接登録してもメモ帳で開かれておしまいなので、PowerShellの実体に-cオプションでスクリプトファイルを渡す設定にします。
PowerShellの実体は多分「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe」というパスにあるはずです。
タスクスケジューラで新しいタスクを作成したら、トリガーの設定で「毎日」にして「繰り返し間隔」を「30分」、継続時間を「1日間」に設定します。
操作の編集では先ほどの通り「プログラム/スクリプト」に「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe」を設定。「引数の追加」に「-c "c:\vpn\vpn.ps1"」を入れておきます。