あいしんくいっとオススメ商品レビュー

Windows Server 2012 R2でログオン/ログオフスクリプト設定(ついでにログオンスクリプト遅延問題も解決)

本記事対象者
Windows Serverでのログオン/ログオフスクリプト設定について知りたい方

ども。あいしんくいっと(@ithinkitnet)です。

Windows使っているとユーザーのログオン/ログアウトのタイミングでスクリプトを実行させたいシチュエーションに遭遇することがあります。
そんな訳で今回はログオン/ログオフスクリプトについて書いておきたいと思います。

Windows Server 2012 R2でのログオンスクリプト遅延問題の対応

Windows Server2012 R2では、ログオンスクリプトの挙動として「ユーザーがログオンしてすぐに実行されず、5分待ってから実行される」という遅延問題が既知の問題としてMSで挙げられています。

参考 ログオン スクリプトは、ユーザーが Windows 8.1 ベースのコンピューターにログオンした後、5分間は実行されません。

「ログオンした後、5分間は実行されない」というのはどうやら、ログオンスクリプトの仕様の問題のようです。

この問題の対応として、以下の対策を施しておきます。
「ファイル名を指定して実行」にて「gpedit.msc」と入力して実行。
ファイル名を指定して実行「gpedit.msc」

グループポリシーの設定で、[ローカルグループポリシー]-[コンピュータの構成]-[管理用テンプレート]-[システム]-[グループ ポリシー]にある「ログオン スクリプトの遅延を構成する」を『未構成』⇒『無効』に変更します。
ローカルグループポリシーで「ログオン スクリプトの遅延を構成する」を選択

「未構成 ⇒ 無効」にチェックして「OK」を押下します。
ログオン スクリプトの遅延を構成するを未構成から無効へ変更

ログオンスクリプトの設定

グループポリシーの設定で、[ユーザの構成]-[Windowsの設定]-[スクリプト(ログオン/ログオフ)]にてログオンをダブルクリック。
スクリプトでログオンを選択
バッチの場合は「スクリプト」タブ、PowerShellの場合は「PowerShell スクリプト」タブにそれぞれ設定していきます。

バッチの場合

スクリプトタブにて「追加」をクリックします。
スクリプトタブにて「追加」

ログオン時に実行したい「バッチ」をフルパスで登録します。
スクリプト名で実行したいスクリプトをフルパスで指定

「OK」をクリックしてスクリプトの登録を完了させます。
ログオンのプロパティで「OK」

これで、ユーザログイン時にログオンスクリプトに登録したバッチが自動で実行されます。

PowerShellの場合

MEMO
WindowsServer2008といった古いOSだと、PowerShellが実行出来なくなっている場合があります。
その場合のみ「PowerShell」の実行許可設定を行います。
まずはPowerShellの有効化をします。
PowerShellの有効化
PS C:UsersAdministratorDesktop> Get-ExecutionPolicy
Restricted
PS C:UsersAdministratorDesktop> Set-ExecutionPolicy RemoteSigned
PS C:UsersAdministratorDesktop> Get-ExecutionPolicy
RemoteSigned

バッチと同じ要領で登録します。
スクリプト名に登録したいスクリプトをフルパスで指定

こんな感じで登録完了。
スクリプト登録完了

これでいけるハズ!

ログオフスクリプトの設定

グループポリシーの設定で、[ユーザの構成]-[Windowsの設定]-[スクリプト(ログオン/ログオフ)]にてログオフをダブルクリック。
ローカルグループポリシーエディタでログオフ選択
ログオフスクリプト時と同様、バッチの場合は「スクリプト」タブ、PowerShellの場合は「PowerShell スクリプト」タブにそれぞれ設定していきます。

バッチの場合

スクリプトタブにて「追加」をクリックします。
ログオフのプロパティ スクリプトタブにて「追加」

2. ログオフ時に実行したい「バッチ」をフルパスで登録します。
「バッチ」をフルパスで登録

3. 「OK」をクリックして登録を完了させます。
ログオフスクリプトの設定完了

これで、ユーザログイン時にログオンスクリプトに登録したバッチが自動で実行されます。

PowerShellの場合

Point
ログオン同様、OSが古い場合はPowerShellの有効化を行います。
(手順は前述)

バッチと同じ要領で登録します。
スクリプトの追加で登録したいスクリプトをフルパス指定

こんな感じで登録完了。
ログオフプロパティの登録完了
これでいけるハズ!

ログオン/ログオフスクリプトは上手く行きましたか?
ログオン/ログオフスクリプトはドメイン環境下だったりすると、それなりに使う機会があると思いますので知っておいて損はない機能だと思います。
バッチ同様、PowerShellも同様に実行出来るはずなのですが、手元の環境では何故か上手くいかず・・・orz

20150622 追記

バッチと同じように登録してやれば問題なく動作することがわかりました。手順も反映済み。

ログオンスクリプトが動かないならこちらもチェック。
ログオンスクリプトが動かない!キャッシュログオン無効化すると動くかも

もしかしたら、GPO周りが原因の場合もあるのでこちらも。
ActiveDirectoryでGPOが適用されない時に確認したいこと

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)