VPNを自動接続するには、パスワードを入力するウィンドウが出てくることを抑止する必要がある。そこで、
%AppData%\Microsoft\Network\Connections\Pbk
内の rasphone.pbk
の PreviewUserPw
を0にする
トリガーは、グローバルIPアドレスが必要な出口かどうかでチェックする。
if((Invoke-WebRequest inet-ip.info/ip).Content -eq "133.X.X.X"){ echo "OK" } else{ rasphone -d "Xlab-external" }
などと書いたファイルをデスクトップ等に保存する。ファイル名は always_on_vpn.ps1
とかで。
管理者権限のPowerShellで
Set-ExecutionPolicy RemoteSigned
を実行する。さっき作った always_on_vpn.ps1
を実行して、VPNに接続できればOK.
Invoke-WebRequest : Internet Explorer エンジンを使用できないか、Internet Explorer の初回起動構成が完了していないため、 応答のコンテンツを解析できません。UseBasicParsing パラメーターを指定して再試行してください。 発生場所 C:\Users\xlab\Desktop\always_on_vpn.ps1:1 文字:6 + if ((Invoke-WebRequest inet-ip.info/ip).Content -eq "133.X.X.X") { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotImplemented: (:) [Invoke-WebRequest], NotSupportedException + FullyQualifiedErrorId : WebCmdletIEDomNotSupportedException,Microsoft.PowerShell.Commands.InvokeWebRequestComman d
と出た時は、Internet Explorerを起動して初期設定をやる。
タスクスケジューラによる常時VPNの設定。起動時と毎日1時間ずつの設定をする
全般
- ユーザーがログオンしているかどうかに関わらず実行する
- 最上位の特権で実行する
トリガー 1
- タスクの開始はスタートアップ時
- 遅延時間は1分間
トリガー2
- タスクの開始はスケジュールに従う
- 設定は毎日で、開始はいつでもよい。間隔は1日
- 繰り返し間隔は1時間 (VPN先の安定度による)
- 継続時間は1日間
操作
- プログラムの開始
- プログラム powershell
- 引数の追加 -c "C:\Users\xlab\Desktop\always_on_vpn.ps1"
(ユーザー名は適宜設定されたし。)
条件
- ネットワーク 次のネットワーク接続が使用可能な場合のみタスクを開始するに のみ チェックを入れる。ほかは外す
設定
- タスク要求時に実行する のみ チェックを入れる。ほかは外す
OKを押し、パスワードを入れて完了。