rasdial エラー 623:まず VPN プロファイルを作成する
エラー 623 は、ダイヤラーが電話帳にエントリを見つけられなかったという意味です。Add-VpnConnection でプロファイルを作成し、その後セッション、電話帳のパス、自動トリガーを揃えてください。
rasdial のエラー 623 はネットワーク障害ではなく、電話帳にその名前のエントリがないという検索の失敗です。Windows はコマンドがダイヤルする前にプロファイルが存在することを前提としており、ダイヤラーが自分でプロファイルを作ることはありません。以下の確認はどれも前の確認が通ったことを前提にしているので、順番に進めてください。
まずエラーコードを読む
623 に続くコードは別の障害を表すため、最初に見えるテキストで分岐が決まります。691 は実在するプロファイルに対する資格情報の拒否で、868 は通常 サーバーアドレスの名前解決 を指します。623 だけがプロファイル作成に戻すので、同じコマンドを繰り返してもほとんど何も変わりません。
ダイヤルするのと同じ手順で終了状態を取得します。スクリプトの次のコマンドがそれを上書きし、誰かがログを読むころには本当のコードは消えています。
rasdial "Office"; if ($LASTEXITCODE -ne 0) { Write-Output "failed: $LASTEXITCODE" }電話帳のエントリが存在することを確認する
もう一つ追加する前に、実際にどのプロファイルがあるのかを Windows に問い合わせます。このコマンドレットは名前、サーバーアドレス、現在の接続状態を返し、結果が空ならその場で疑問は解決します。
Windows はユーザーごとのエントリを一方の電話帳ファイルに、全ユーザーのエントリを他方に保存するため、同じ名前が二つの異なるサーバーを指すことがあります。この重複が、確認した設定は完全に正しく見えるのにスクリプトが誤ったエンドポイントにダイヤルする原因です。名前について結論を出す前に両方の場所を一覧してください。
Get-VpnConnection -Name "Office" | Format-List Name, ServerAddress, ConnectionStatus
dir "%APPDATA%\Microsoft\Network\Connections\Pbk"
dir "%PROGRAMDATA%\Microsoft\Network\Connections\Pbk"Add-VpnConnection でプロファイルを作成する
エントリはテキスト編集ではなく、ネイティブなプロファイルを書き込むコマンドレットで一度だけ作成し、サーバーアドレス、トンネルの種類、そしてゲートウェイが実際に受け入れる認証方法を指定してください。間違ったプロトコルを交渉するプロファイルは、後になってサーバーのせいにするメッセージで失敗します。
rasphone.pbk に接続セクションを手作業で貼り付けることは今もできますが、その編集を検証するものはありません。キーを一つ間違えると何に対しても認証しないプロファイルになり、出てくるエラーはタイプミスではなく遠隔の障害のように見えます。
Add-VpnConnection -Name "Office" -ServerAddress vpn.corp.internal \
-TunnelType Ikev2 -AuthenticationMethod Eap -EncryptionLevel Requiredセッションを資格情報ストアに合わせる
エントリはユーザーまたはマシンに属し、その背後の証明書や保存された資格情報は一つのログオンセッションからしか到達できない場合があります。SYSTEM として実行されるスケジュールタスクはサインインしたアカウントとは別のクライアントであり、セッション 0 のサービスにはプロンプトを表示するデスクトップがありません。対話型セッションが未知のネットワークに初めて出会うと、Windows はネットワークの場所のプロンプトを開き、ダイヤラーにはそれを黙らせるスイッチがありません。セッション分離はそのプロンプトを避け、同時に一部の認証方法が必要とするユーザーコンテキストを削除します。
所有者は、ユーザーごとのトンネルならログオンで起動するタスク、マシン全体のトンネルならサービスというように意図的に選んでください。両者を混ぜて同じ挙動を期待すると、手作業では動く接続が自動化の下で失敗し始めます。
自動トリガーは見つけたときのままにする
アプリケーションやネットワーク条件が一致すると Windows は自分でトンネルを立てることがあり、切断するとそのプロファイルが無効化された自動トリガーの一覧に追加されることがあります。すると次の自動試行は、責任のあるスクリプトが終了してずっと後になっても決して起こりません。したがって無条件に切断するジョブは、そのマシンの他のすべてのユーザーの常時接続動作を壊します。この副作用はジョブのログに現れず、だからこそ高くつきます。
ジョブを実行する前にプロファイルの状態を記録し、既定でトンネルを破壊するのではなく、見つけたとおりに戻してください。トリガーを再有効化するのはポリシーの変更なので、後片付けではなく意図的な手順として扱います。
どれだけスクリプトを書いても二つの限界は残ります。トンネルの背後のサービスがまだ到達不能でも rasdial は成功を報告できます から、本当に必要なリソースを検証してください。スマートカード、プッシュ承認、ブラウザーでのサインインを要求するプロファイルには無人で通る道がなく、人間の所有者は設計の一部であり続けます。