|
現: 2023-11-07 (火) 14:54:26 yuji |
| + | * Windowsのログオン前にVPN接続する [#c6d3752c] |
| + | 外部のネットワークと社内のローカルネットワークを接続出来るVPN接続は便利な機能です。~ |
| | | |
| + | 社内のローカルネットワークのActive Directoryを使用してドメイン接続するWindowsノートPC(ローカルアカウントが使えない)を自宅に持っていき,ドメインアカウント(ADアカウント)でログオンしようとすると,この時にはVPN接続されていないため当然ドメインアカウントでWindowsにログオン出来ない。~ |
| + | |
| + | これは,Active Directory環境が社内ローカルネットワークでしか使用出来ないから。 |
| + | |
| + | つまり,このようなPCを自宅に持って行ってADアカウントでWindowsにログオンする場合,前もってそのPCを社内のローカルネットワークにVPN接続しておく必要がある。~ |
| + | |
| + | しかし,Windows PCのVPN接続操作はログオン後に操作できるようになっているので,このままではVPNに接続して社内ドメインのADアカウントでWindowsにログオンするという手順が実現できない。 |
| + | |
| + | この問題に対応するにはいくつかの方法があるのだが,PC側でWindowsにログオンする前にVPN接続する方法で対応してみる。 |
| + | |
| + | 注意することとして,VPN接続するためには''前もってグローバル IPネットワーク(公衆回線や通信キャリアの閉域網・・・)のアクセスポイントのどこかに接続しておく必要がある。'' |
| + | |
| + | ** タスクスケジューラを使用する方法 [#r36f9eff] |
| + | タスクスケジューラは,ログオン後に定期的に処理を行ったりする場合に利用するものだが,登録する時にログオンしていなくても実行出来るようにすることが出来る。~ |
| + | |
| + | この機能を使ってPCが電源ON後にログインしていない状況でも,VPN接続するようにしてみる。 |
| + | |
| + | *** VPN接続するBATファイルを作成する [#bbdacd13] |
| + | まず,VPN接続をコマンドで行えるBATファイルを作成する。このとき使用するVPN接続は,既に作成されていて接続出来るようになっているのが前提。~ |
| + | |
| + | ''vpndial.bat''を作成します。~ |
| + | @echo off |
| + | rasdial "VPN接続名" 接続する時のユーザー名 接続する時のパスワード |
| + | 作成したvpndial.batを実行PATHが通っているディレクトリに置きます。(例:C:\WinApl\exe)~ |
| + | ''vpndial.vbs''を作成して同様に実行PATHが通っているディレクトリに置きます。 |
| + | CreateObject("WScript.Shell").Run "c:\WinApl\exe\vpndial.bat",0 |
| + | vpndial.batをそのまま実行すると,実行している時のウィンドウ画面が表示されてしまいます。なので,vpndial.vbsからvpndial.batを実行するようにするとこのウィンドウ画面が表示しないようにすることが出来ます。 |
| + | |
| + | *** タスクスケジューラで実行するプログラムを用意する [#ta0d1cb8] |
| + | タスクスケジューラでは,定期的にVPN接続されているかどうか確認し,接続されていない場合は上記のvpndial.vbsを使用してVPN接続するようにします。~ |
| + | |
| + | このために,PowerShellスクリプトを作成します。~ |
| + | ''vpnconnect.ps1''ファイルを以下の内容で作成します。 |
| + | $A = ipconfig | Select-String 192.168.25 |
| + | if($A.length -eq "0"){ |
| + | C:\WinApl\exe\vpndial.vbs |
| + | }else{ |
| + | echo "OK" |
| + | } |
| + | |
| + | ipconfigコマンドを使って接続されているか確認しています。~ |
| + | 192.168.25.xは,vpnで接続してアサインされるネットワークアドレスの例です。~ |
| + | |
| + | BATファイル''vpnconnect.bat''の場合は, |
| + | @echo off |
| + | set A= |
| + | for /f "usebackq delims=" %%i in (`ipconfig ^| findstr 192.168.25`) do set A=%%i |
| + | if not defined A ( |
| + | C:\WinApl\exe\vpndial.vbs |
| + | ) else ( |
| + | echo OK |
| + | ) |
| + | でも同じように動作します。~ |
| + | |
| + | ''vpnconnect.vbs''も作成します。~ |
| + | CreateObject("WScript.Shell").Run "powershell c:\winapl\exe\vpnconnect.ps1", 0 |
| + | vpnconnect.ps1とvpnconnect.vbsを,実行PATHが通っているディレクトリに置きます。(例:C:\WinApl\exe)~ |
| + | |
| + | *** タスクスケジューラに登録 [#w96c7c5d] |
| + | - タスクスケジューラの起動~ |
| + | Windows10では,Windows + Rキーを押して検索にタスクスケジューラと入力し,タスクスケジューラをクリックして,タスクスケジューラを起動する。 |
| + | - 右ペインのタスクの作成をクリックする~ |
| + | - 名前を''VPN接続''として以下のように登録する~ |
| + | #ref(task1.png,,60%) |
| + | 「ユーザーにログオンしているかどうかに関わらず実行する」にマークする。~ |
| + | 「最上の特権で実行する」にマークする。~ |
| + | - トリガータブをクリックして以下のように登録する~ |
| + | #ref(task2.png,,60%) |
| + | 開始時間は,好きな時間にする。~ |
| + | 繰り返し間隔は,ここでは15分にしている。15分間隔でVPN接続されているか確認し,接続されていなければVPN接続するようになります。 |
| + | - 操作タブをクリックして以下のように新規登録する~ |
| + | #ref(task3.png,,60%) |
| + | プログラム/スクリプトに,上記で作成した''vpnconnect.vbs''を設定する。 |
| + | - OKボタンをクリックして,登録を完了する~ |
| + | |
| + | これでタスクスケジューラに登録出来た。 |
| + | |
| + | PCを電源オン後は,15分間間隔で自動でVPN接続するようになります。すでに接続している場合は,そのままで何もしません。~ |