読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
グループポリシーを使うと、コンピューターの起動時やユーザーのログオン時に、スクリプトを自動で実行できます。この記事では、簡単なスクリプトを使って、グループポリシーによるスクリプトの登録と実行を確認します。グループポリシーの基本は、【Active Directory】グループポリシーの構成・適用・更新 を参考にしてください。
- スクリプトを実行する4つのタイミングと、設定する場所の違い
- スクリプトの実行に関わる主なポリシー(同期実行、最大待機時間)
- ログオン スクリプトを登録し、ログオン時にメッセージが表示されることを確認する
スクリプトの実行タイミング
グループポリシーで実行できるスクリプトには、実行されるタイミングによって次の4種類があります。スタートアップとシャットダウンは「コンピューターの構成」、ログオンとログオフは「ユーザーの構成」で設定します。
| スクリプト | 実行されるタイミング | 設定する場所 |
|---|---|---|
| スタートアップ | コンピューターの起動時 | コンピューターの構成 |
| シャットダウン | コンピューターの停止時 | コンピューターの構成 |
| ログオン | ユーザーのログオン時 | ユーザーの構成 |
| ログオフ | ユーザーのログオフ時 | ユーザーの構成 |
グループ ポリシー管理エディターでは、それぞれ次の場所にあります。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
GPO1 [AD-1.HIROTANOBLOG.LOCAL] ポリシー▾ コンピューターの構成 ▾ ポリシー › ソフトウェアの設定 ▾ Windows の設定 › 名前解決ポリシー1 スクリプト (スタートアップ/シャットダウン) › セキュリティの設定 › 管理用テンプレート▾ ユーザーの構成 ▾ ポリシー › ソフトウェアの設定 ▾ Windows の設定2 スクリプト (ログオン/ログオフ) › セキュリティの設定 › フォルダー リダイレクト › 管理用テンプレート
| No. | 表示 | 意味 |
|---|---|---|
| 1 | スクリプト (スタートアップ/シャットダウン) | コンピューターの構成 ›› ポリシー ›› Windows の設定 の下にある |
| 2 | スクリプト (ログオン/ログオフ) | ユーザーの構成 ›› ポリシー ›› Windows の設定 の下にある |
スクリプトに関するポリシー設定
スクリプトの実行のしかたは、管理用テンプレートのポリシーで細かく設定できます。どちらも ポリシー ›› 管理用テンプレート ›› システム ›› スクリプト にあります。
コンピューターの構成
| 設定 | 状態 |
|---|---|
| NetBIOS または WINS が無効の場合にログオン スクリプトを許可する | 未構成 |
| 1グループ ポリシー スクリプトの最大待機時間を指定する | 未構成 |
| コンピューターのスタートアップ、シャットダウン時に Windows PowerS… | 未構成 |
| 2ログオン スクリプトを同期的に実行する | 未構成 |
| 実行中のシャットダウン スクリプトの命令を表示する | 未構成 |
| スタートアップ スクリプトを非同期に実行する | 未構成 |
| 実行中のスタートアップ スクリプトの命令を表示する | 未構成 |
| ユーザーのログオン、ログオフ時に Windows PowerShell スクリプトを… | 未構成 |
| No. | ポリシー | 内容 |
|---|---|---|
| 1 | グループ ポリシー スクリプトの最大待機時間を指定する | ログオン、ログオフ、スタートアップ、シャットダウンの各スクリプトが終わるまで待つ時間の上限。既定は 600 秒(10 分)で、時間を過ぎるとスクリプトの処理を止めてエラーのイベントを記録する。1〜32,000 秒で指定でき、0 は終わるまで待ち続ける |
| 2 | ログオン スクリプトを同期的に実行する | 有効にすると、ログオン スクリプトが終わってからエクスプローラーが起動し、デスクトップが表示される。未構成・無効のときは、スクリプトとエクスプローラーが同時に動く |
同期実行を有効にすると、ユーザーが作業を始める前にスクリプトの処理が終わります。その代わり、スクリプトが長いほどデスクトップの表示が遅れます。スクリプトが止まってしまうとログオンが進まなくなるので、最大待機時間で待つ時間の上限を決めておきます。
「ログオン スクリプトを同期的に実行する」は、コンピューターの構成とユーザーの構成の両方にあります。両方で設定した場合は、コンピューターの構成の設定が優先されます。
ユーザーの構成
ユーザーの構成にも、同じ ポリシー ›› 管理用テンプレート ›› システム ›› スクリプト にスクリプト関連のポリシーがあります。
| 設定 | 状態 |
|---|---|
| 実行中のレガシ ログオン スクリプトを表示しない | 未構成 |
| 実行中のログオフ スクリプトの命令を表示する | 未構成 |
| 1ログオン スクリプトを同期的に実行する | 未構成 |
| 実行中のログオン スクリプトの命令を表示する | 未構成 |
| ユーザーのログオン、ログオフ時に Windows PowerShell スクリプトを最初に実行する | 未構成 |
| No. | ポリシー | 内容 |
|---|---|---|
| 1 | ログオン スクリプトを同期的に実行する | コンピューターの構成と同じポリシー。両方で設定した場合はコンピューターの構成が優先される |
スクリプトの登録
スタートアップとシャットダウンのスクリプトは、コンピューターの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (スタートアップ/シャットダウン) で登録します。右側の「スタートアップ」または「シャットダウン」をダブルクリックすると、プロパティが開きます。
プロパティには「スクリプト」タブと「PowerShell スクリプト」タブがあります。バッチファイルなどは「スクリプト」タブ、PowerShell のスクリプト(.ps1)は「PowerShell スクリプト」タブで登録します。
| 名前/パラメーター |
| ||||
| 1追加(D)… | スクリプトを登録する | ||||
| 2ファイルの表示(S)… | GPO に格納されているスクリプト ファイルのフォルダーを開く |
| 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)になります。
スクリプト実行例(ログオンスクリプト)
ログオン時にポップアップでメッセージを表示するスクリプトを登録し、動作を確認します。スクリプトは次の1行だけのバッチファイル(ログオンスクリプト.bat)です。
ログオンスクリプト.bat
msg Console /server:localhost "ユーザーがログオンしました"
msg はセッションにメッセージを送るコマンドです。Console はコンソール セッション、/server:localhost は自分のコンピューターを表します。メッセージは既定で 60 秒間表示されます。
スクリプトを配置する
ユーザーの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (ログオン/ログオフ) を開き、「ログオン」をダブルクリックします。「ログオンのプロパティ」の「スクリプト」タブで 追加 をクリックし、「スクリプトの追加」で 参照 をクリックします。
開いたフォルダー(User\Scripts\Logon)に、作成済みのスクリプト(ログオンスクリプト.bat)をコピーして貼り付けます。貼り付けたスクリプトを選択し、開く をクリックします。
| 名前 | 更新日時 | 種類 |
|---|---|---|
| 1ログオンスクリプト | 2022/10/02 15:06 | Windows バッチ ファイル |
| ファイル名(N) | ログオンスクリプト すべてのファイル |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | ログオンスクリプト | User\Scripts\Logon にコピーしたバッチファイル。選択する |
| 2 | 開く | スクリプト名に入力される |
「スクリプトの追加」のスクリプト名に ログオンスクリプト.bat が入ったことを確認し、OK をクリックします。「ログオンのプロパティ」の一覧にスクリプトが追加されるので、適用、OK の順にクリックします。
| 1名前/パラメーター |
|
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | ログオンスクリプト.bat | 登録されたスクリプト。パラメーターはなし |
| 2 | 適用、OK | 設定を保存して閉じる |
ログオンスクリプトを同期的に実行する
デスクトップが表示される前にスクリプトが動くことを確かめるため、コンピューターの構成の「ログオン スクリプトを同期的に実行する」を、未構成から「有効」にします。
| 設定 | 状態 |
|---|---|
| NetBIOS または WINS が無効の場合にログオン スクリプトを許可する | 未構成 |
| グループ ポリシー スクリプトの最大待機時間を指定する | 未構成 |
| コンピューターのスタートアップ、シャットダウン時に Windows PowerS… | 未構成 |
| 1ログオン スクリプトを同期的に実行する | 有効 |
| ⋮ (ほかは未構成) | |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | ログオン スクリプトを同期的に実行する | 有効。スクリプトが終わってからデスクトップが表示される |
Windows 8.1 以降のクライアントでは、グループポリシーのクライアントが、既定でログオンから 5 分待ってからログオン スクリプトを実行します。この待ち時間は コンピューターの構成 ›› ポリシー ›› 管理用テンプレート ›› システム ›› グループ ポリシー ›› ログオン スクリプトの遅延の構成 で変えられ、無効にするとログオン直後に実行されます。ログオン スクリプトがすぐに動かないときは、この設定も確認します。
動作を確認する
設定した GPO を、ユーザーとコンピューターが所属する OU にリンクし、クライアントで GPO を更新します(gpupdate など)。ログオン スクリプトはユーザーの構成、同期実行の設定はコンピューターの構成なので、ユーザーとコンピューターの両方に GPO が適用されている必要があります。
ユーザーでログオンすると、デスクトップが表示される前に、ポップアップでメッセージが表示されました。
| 1ユーザーがログオンしました |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ユーザーがログオンしました | ログオン スクリプトの msg が実行された。背景はまだログオン画面で、デスクトップは表示されていない |
まとめ
| 項目 | 内容 |
|---|---|
| スタートアップ/シャットダウン | コンピューターの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (スタートアップ/シャットダウン) |
| ログオン/ログオフ | ユーザーの構成 ›› ポリシー ›› Windows の設定 ›› スクリプト (ログオン/ログオフ) |
| スクリプトの置き場所 | SYSVOL の GPO フォルダー(Machine\Scripts\… / User\Scripts\…)。ドメインコントローラ間で複製される |
| 同期実行 | 管理用テンプレート ›› システム ›› スクリプト ›› ログオン スクリプトを同期的に実行する(コンピューターの構成が優先) |
| 最大待機時間 | 既定 600 秒。0 にすると終わるまで待ち続ける |
コメント