現時点では、私は単にチェックするだけの非常に基本的なPSスクリプトを作成しました。デフォルト接続デフォルトがスクリプトで指定されたものと異なる場合は、VPN に接続します。
$DefaultNetworkIndex = Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Sort-Object {$_.RouteMetric+(Get-NetIPInterface -AssociatedRoute $_).InterfaceMetric} | Select-Object -First 1 -ExpandProperty InterfaceIndex
$DefaultNetwork = (Get-NetConnectionProfile -InterfaceIndex $DefaultNetworkIndex).Name
if ($DefaultNetwork -ne 'Some Connection Name') {
Invoke-Expression 'rasdial VPN username password /phonebook:rasphone.pbk'
}
詳しく述べたいと思います:
- ネットワークの変化を常に監視し、それに応じて行動する
- VPNが実行されるまで、指定されていないネットワーク内のネットワークアクセスをブロックします。
しかし、Google で調べても、上記の点を実現する方法は見つかりませんでした。これらを実現するためのヒント (PS 用のネットワーク ライブラリなど) があれば、ぜひ教えてください。
答え1
これを行うには 2 つの方法があります。
1 つは PowerShell スクリプトを継続的に実行し、N 秒ごとにループでネットワーク状態の変化をチェックします (アイドル状態にするには sleep コマンドを使用します)。
もう 1 つの、おそらくより良い方法は、Windows タスク スケジューラ イベントからスクリプトを起動することです。たとえば、ユーザーがログオンしたときやマシンが起動したときにチェックをトリガーできます。また、システム イベント ログのイベントを使用して特定のトリガーを定義することもできます。これには、使用できるネットワーク関連のイベントが含まれている可能性があります (私はネットワーク関連のものにこれを使用したことがないので、自分で確認する必要があります)。適切なトリガーを使用することで、ネットワークの状態が変わったときにのみスクリプトを実行できる可能性があります。
お役に立てれば。