VPN に接続してもログオンスクリプトは再実行されない
ログオンスクリプトはログオン時に実行され、トンネルが現れたときには実行されません。起動、サインイン、バックグラウンド更新を分け、接続時に処理を起動します。
利用者は自宅でサインインし、VPN に接続し、以前オフィスでひとりでに現れていたドライブ マッピングを待ちます。トンネルは上がり、ドメインは応答するのに、何もマップされません。壊れているわけではありません。ログオンスクリプトはログオン時に実行されるもので、セッション開始から二十分後に開いたトンネルはログオンではありません。この二つを同じ出来事として読むと、存在しない VPN の不具合を探し回ることになります。
四つの判断がこの驚きを正しく振る舞うワークフローに変えます。最初は、スクリプトがどのイベントに乗っているかを知ることだけです。
スクリプトは再生できないライフサイクル イベントに乗っている
コンピューター側のポリシーはマシンの起動時に、ユーザー側のポリシーはサインイン時に適用され、バックグラウンド更新は何も再起動せずに同じ設定を巡回します。その更新はスクリプト拡張を処理しますが、個々のスクリプトは再実行しません。スクリプトが起動するのは、起動、シャットダウン、ログオン、ログオフのときだけです。したがって gpupdate /force が成功を報告してもマッピングが欠けたままであり、きれいな更新はスクリプトが何かをした証拠にはなりません。
ポリシー処理に関する Microsoft のリファレンス は、拡張を処理することと中身を実行することの間にまさにその線を引いており、更新がスクリプトを再実行すべきだったと誰かが主張するときに引用すべきページです。
オフラインで失敗するのはすべてのスクリプトではありません。ローカルまたはキャッシュされた資料だけを読むスクリプトは部分的に成功したかもしれませんが、共有に触れるスクリプトは静かに失敗し、明らかな痕跡を残しません。ネットワークを責める前に、実際のスクリプト パスとそこが何に到達するかを確認してください。スクリプトがログオン時に実行されないという主張にも同じ精査が必要です。スケジュールされたタスクやクライアントの操作が、誰も見ていないところで作業をしている可能性があります。
作業はログオンではなく接続に結びつける
ログオンスクリプトという言葉の裏には三つの別の作業が隠れています。利用者が接続した後にドライブをマップすること、誰かがサインインする前にマシン構成を適用すること、更新されたポリシーを取得することです。期限はそれぞれ異なり、ログオン前に接続が本当に必要なのは二つ目だけです。要件は期限を含む文として書きます。たとえば、このマッピングはトンネルが上がってから一分以内に存在しなければならない、といった具合です。
接続後に必要な作業には、接続で起動するタスクか、クライアントが対応する接続アクションを使います。クライアントが実際にどのイベントを出すかを確認してください。Windows 標準の VPN クライアントが発するイベントは、サードパーティ製クライアントでは発せられません。サインイン前に必要なマシン構成については、対応している答えはデバイス トンネルなどのサインイン前の設計であり、デスクトップが現れてから起動するタスクではありません。 必要な ID とセッションで作業を実行する。SYSTEM として作成されたマッピングは、利用者が決して見ないセッションに落ちるからです。
行動する前に準備を確認し、大きな声で失敗する
接続イベントは DNS やファイル サーバーが使えるようになる前に届くことがあるため、タスクは前提せず必要なものを確認するべきです。特定の名前を解決し、特定の接続を試し、上限と遅延を付けて再試行します。短いループ内の Resolve-DnsName files.corp.example が、まだではないと決してないを切り分けます。最後の試行の後に、名前とエラーを含む具体的な失敗を報告してください。
ログのない無限ループは、決して始まらなかったタスクと区別できず、古い資格情報とファイアウォール規則の違いを隠します。
四つのことを確認し、それから再現可能にする
パイロット中は一つではなく四つの観察を記録します。接続イベントが発火した、タスクが開始した、リソースが応答した、要求した変更が実際に反映された、の四つです。ログがタスク開始で止まるなら、どれだけ待っても本当の失敗は見えないままです。次に gpresult /scope user /v を実行して、セッションが自分のポリシーをどう認識しているかを見て、期待した設定と比べます。GPO が適用済みと記載されたレポートでも、マッピングについては何も語りません。
広げる前に、作業を安全に繰り返せるようにします。クライアントは再接続し、タスクは再び発火するからです。作成する前に既存のマッピングや構成を確認し、見つけたことを記録します。一時的な再接続のたびに作業が重複することこそ、役立つタスクがインシデントになる道です。
自動のきっかけが適さない場合、同じ署名済みスクリプトを実行する承認済みのユーザー操作は正当な設計です。ログオン イベントが起きたふりをする代わりに、タイミングを明示します。