【AD GPO】ログオン・起動スクリプト設定と動作確認

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

グループポリシーを使うと、コンピューターの起動時やユーザーのログオン時に、スクリプトを自動で実行できます。この記事では、簡単なスクリプトを使って、グループポリシーによるスクリプトの登録と実行を確認します。グループポリシーの基本は、【Active Directory】グループポリシーの構成・適用・更新 を参考にしてください。

この記事でわかること
  1. スクリプトを実行する4つのタイミングと、設定する場所の違い
  2. スクリプトの実行に関わる主なポリシー(同期実行、最大待機時間)
  3. ログオン スクリプトを登録し、ログオン時にメッセージが表示されることを確認する

スクリプトの実行タイミング

グループポリシーで実行できるスクリプトには、実行されるタイミングによって次の4種類があります。スタートアップとシャットダウンは「コンピューターの構成」、ログオンとログオフは「ユーザーの構成」で設定します。

スクリプト実行されるタイミング設定する場所
スタートアップコンピューターの起動時コンピューターの構成
シャットダウンコンピューターの停止時コンピューターの構成
ログオンユーザーのログオン時ユーザーの構成
ログオフユーザーのログオフ時ユーザーの構成
時間 コンピューターの構成:スタートアップ/シャットダウン ユーザーの構成:ログオン/ログオフ スタートアップコンピューター起動時 ログオンユーザーのログオン時 ログオフユーザーのログオフ時 シャットダウンコンピューター停止時
図1 スクリプトが実行されるタイミング

グループ ポリシー管理エディターでは、それぞれ次の場所にあります。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

グループ ポリシー管理エディター画面イメージ
  GPO1 [AD-1.HIROTANOBLOG.LOCAL] ポリシー▾ コンピューターの構成  ▾ ポリシー    › ソフトウェアの設定    ▾ Windows の設定      › 名前解決ポリシー1        スクリプト (スタートアップ/シャットダウン)      › セキュリティの設定    › 管理用テンプレート▾ ユーザーの構成  ▾ ポリシー    › ソフトウェアの設定    ▾ Windows の設定2        スクリプト (ログオン/ログオフ)      › セキュリティの設定      › フォルダー リダイレクト    › 管理用テンプレート
図2 スクリプトを登録する場所(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1スクリプト (スタートアップ/シャットダウン)コンピューターの構成 ›› ポリシー ›› Windows の設定 の下にある
2スクリプト (ログオン/ログオフ)ユーザーの構成 ›› ポリシー ›› Windows の設定 の下にある

スクリプトに関するポリシー設定

スクリプトの実行のしかたは、管理用テンプレートのポリシーで細かく設定できます。どちらも ポリシー ›› 管理用テンプレート ›› システム ›› スクリプト にあります。

コンピューターの構成

グループ ポリシー管理エディター画面イメージ
コンピューターの構成 ›› ポリシー ›› 管理用テンプレート ›› システム ›› スクリプト
設定状態
NetBIOS または WINS が無効の場合にログオン スクリプトを許可する未構成
1グループ ポリシー スクリプトの最大待機時間を指定する未構成
コンピューターのスタートアップ、シャットダウン時に Windows PowerS…未構成
2ログオン スクリプトを同期的に実行する未構成
実行中のシャットダウン スクリプトの命令を表示する未構成
スタートアップ スクリプトを非同期に実行する未構成
実行中のスタートアップ スクリプトの命令を表示する未構成
ユーザーのログオン、ログオフ時に Windows PowerShell スクリプトを…未構成
図3 コンピューターの構成のスクリプト関連ポリシー(実際の画面ではなく、表示のポイントを示したイメージです)
No.ポリシー内容
1グループ ポリシー スクリプトの最大待機時間を指定するログオン、ログオフ、スタートアップ、シャットダウンの各スクリプトが終わるまで待つ時間の上限。既定は 600 秒(10 分)で、時間を過ぎるとスクリプトの処理を止めてエラーのイベントを記録する。1〜32,000 秒で指定でき、0 は終わるまで待ち続ける
2ログオン スクリプトを同期的に実行する有効にすると、ログオン スクリプトが終わってからエクスプローラーが起動し、デスクトップが表示される。未構成・無効のときは、スクリプトとエクスプローラーが同時に動く
同期的に実行する(有効) ログオン ログオン スクリプト デスクトップの表示 同期しない(未構成・無効) ログオン ログオン スクリプト デスクトップの表示 同時に進む
図4 ログオン スクリプトの同期実行

同期実行を有効にすると、ユーザーが作業を始める前にスクリプトの処理が終わります。その代わり、スクリプトが長いほどデスクトップの表示が遅れます。スクリプトが止まってしまうとログオンが進まなくなるので、最大待機時間で待つ時間の上限を決めておきます。

コンピューターの構成とユーザーの構成の両方にあるポリシー

「ログオン スクリプトを同期的に実行する」は、コンピューターの構成とユーザーの構成の両方にあります。両方で設定した場合は、コンピューターの構成の設定が優先されます。

ユーザーの構成

ユーザーの構成にも、同じ ポリシー ›› 管理用テンプレート ›› システム ›› スクリプト にスクリプト関連のポリシーがあります。

グループ ポリシー管理エディター画面イメージ
ユーザーの構成 ›› ポリシー ›› 管理用テンプレート ›› システム ›› スクリプト
設定状態
実行中のレガシ ログオン スクリプトを表示しない未構成
実行中のログオフ スクリプトの命令を表示する未構成
1ログオン スクリプトを同期的に実行する未構成
実行中のログオン スクリプトの命令を表示する未構成
ユーザーのログオン、ログオフ時に Windows PowerShell スクリプトを最初に実行する未構成
図5 ユーザーの構成のスクリプト関連ポリシー(実際の画面ではなく、表示のポイントを示したイメージです)
No.ポリシー内容
1ログオン スクリプトを同期的に実行するコンピューターの構成と同じポリシー。両方で設定した場合はコンピューターの構成が優先される

スクリプトの登録

スタートアップとシャットダウンのスクリプトは、コンピューターの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (スタートアップ/シャットダウン) で登録します。右側の「スタートアップ」または「シャットダウン」をダブルクリックすると、プロパティが開きます。

プロパティには「スクリプト」タブと「PowerShell スクリプト」タブがあります。バッチファイルなどは「スクリプト」タブ、PowerShell のスクリプト(.ps1)は「PowerShell スクリプト」タブで登録します。

スタートアップのプロパティ画面イメージ
スクリプト / PowerShell スクリプト
スタートアップ スクリプト (スクリプト実行)
名前/パラメーター
名前パラメーター
 
1追加(D)…スクリプトを登録する
2ファイルの表示(S)…GPO に格納されているスクリプト ファイルのフォルダーを開く
OKキャンセル適用(A)
図6 スタートアップのプロパティ(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1追加「スクリプトの追加」が開く。スクリプト名とパラメーターを指定する
2ファイルの表示GPO のスクリプト用フォルダーが開く。ここにスクリプトを置く

「スクリプトの追加」で 参照 をクリックすると、GPO のスクリプト用フォルダー(スタートアップの場合は Machine\Scripts\Startup)が開きます。今回の環境では、スタートアップ スクリプトの格納場所は次のとおりです。

C:\Windows\SYSVOL\sysvol\hirotanoblog.local\Policies\{DCC1E5F9-40AF-4920-9ABE-D672767B356F}\Machine\Scripts\Startup

{DCC1E5F9-40AF-4920-9ABE-D672767B356F} は GPO の ID で、GPO ごとに違います。SYSVOL フォルダーの下にスクリプトを置くと、ドメインコントローラ間でスクリプトが複製されます。ログオンとログオフのスクリプトも同じように登録しますが、「コンピューターの構成」ではなく「ユーザーの構成」の スクリプト (ログオン/ログオフ) で登録し、フォルダーは User\Scripts\Logon(ログオフは User\Scripts\Logoff)になります。

DC SYSVOL\…\Policies\{GPO の ID} Machine\Scripts \Startup \Shutdown User\Scripts \Logon \Logoff 複製 ほかの DC 同じ SYSVOL を持つ 読み込み クライアント 起動・ログオン時 GPO をリンクした OU のコンピューターやユーザーで、スクリプトが実行される
図7 スクリプトの保存場所と配布の流れ

スクリプト実行例(ログオンスクリプト)

ログオン時にポップアップでメッセージを表示するスクリプトを登録し、動作を確認します。スクリプトは次の1行だけのバッチファイル(ログオンスクリプト.bat)です。

ログオンスクリプト.bat

msg Console /server:localhost "ユーザーがログオンしました"

msg はセッションにメッセージを送るコマンドです。Console はコンソール セッション、/server:localhost は自分のコンピューターを表します。メッセージは既定で 60 秒間表示されます。

スクリプトを配置する

ユーザーの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (ログオン/ログオフ) を開き、「ログオン」をダブルクリックします。「ログオンのプロパティ」の「スクリプト」タブで 追加 をクリックし、「スクリプトの追加」で 参照 をクリックします。

開いたフォルダー(User\Scripts\Logon)に、作成済みのスクリプト(ログオンスクリプト.bat)をコピーして貼り付けます。貼り付けたスクリプトを選択し、開く をクリックします。

参照画面イメージ
« User › Scripts › Logon
名前更新日時種類
1ログオンスクリプト2022/10/02 15:06Windows バッチ ファイル
ファイル名(N)ログオンスクリプト すべてのファイル
2開く(O)キャンセル
図8 スクリプトをフォルダーに置いて選ぶ(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1ログオンスクリプトUser\Scripts\Logon にコピーしたバッチファイル。選択する
2開くスクリプト名に入力される

「スクリプトの追加」のスクリプト名に ログオンスクリプト.bat が入ったことを確認し、OK をクリックします。「ログオンのプロパティ」の一覧にスクリプトが追加されるので、適用、OK の順にクリックします。

ログオンのプロパティ画面イメージ
スクリプト / PowerShell スクリプト
ログオン スクリプト (スクリプト実行)
1名前/パラメーター
名前パラメーター
ログオンスクリプト.bat
2OKキャンセル適用(A)
図9 ログオン スクリプトの登録(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1ログオンスクリプト.bat登録されたスクリプト。パラメーターはなし
2適用、OK設定を保存して閉じる

ログオンスクリプトを同期的に実行する

デスクトップが表示される前にスクリプトが動くことを確かめるため、コンピューターの構成の「ログオン スクリプトを同期的に実行する」を、未構成から「有効」にします。

グループ ポリシー管理エディター画面イメージ
コンピューターの構成 ›› … ›› システム ›› スクリプト
設定状態
NetBIOS または WINS が無効の場合にログオン スクリプトを許可する未構成
グループ ポリシー スクリプトの最大待機時間を指定する未構成
コンピューターのスタートアップ、シャットダウン時に Windows PowerS…未構成
1ログオン スクリプトを同期的に実行する有効
⋮ (ほかは未構成)
図10 同期実行を有効にする(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1ログオン スクリプトを同期的に実行する有効。スクリプトが終わってからデスクトップが表示される
ログオン スクリプトの遅延

Windows 8.1 以降のクライアントでは、グループポリシーのクライアントが、既定でログオンから 5 分待ってからログオン スクリプトを実行します。この待ち時間は コンピューターの構成 ›› ポリシー ›› 管理用テンプレート ›› システム ›› グループ ポリシー ›› ログオン スクリプトの遅延の構成 で変えられ、無効にするとログオン直後に実行されます。ログオン スクリプトがすぐに動かないときは、この設定も確認します。

動作を確認する

設定した GPO を、ユーザーとコンピューターが所属する OU にリンクし、クライアントで GPO を更新します(gpupdate など)。ログオン スクリプトはユーザーの構成、同期実行の設定はコンピューターの構成なので、ユーザーとコンピューターの両方に GPO が適用されている必要があります。

ユーザーでログオンすると、デスクトップが表示される前に、ポップアップでメッセージが表示されました。

ログオン中の画面画面イメージ
(伏せています) からのメッセージ 2022/10/02 16:17
1ユーザーがログオンしました
OK
図11 ログオン時に表示されたメッセージ(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1ユーザーがログオンしましたログオン スクリプトの msg が実行された。背景はまだログオン画面で、デスクトップは表示されていない

まとめ

項目内容
スタートアップ/シャットダウンコンピューターの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (スタートアップ/シャットダウン)
ログオン/ログオフユーザーの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (ログオン/ログオフ)
スクリプトの置き場所SYSVOL の GPO フォルダー(Machine\Scripts\… / User\Scripts\…)。ドメインコントローラ間で複製される
同期実行管理用テンプレート ›› システム ›› スクリプト ›› ログオン スクリプトを同期的に実行する(コンピューターの構成が優先)
最大待機時間既定 600 秒。0 にすると終わるまで待ち続ける

コメント