ドメイン環境化において、ユーザが端末からログオフした時間を、AD サーバーのイベントビューワーへ出力方法についてご紹介します。
ログオフスクリプトの作成
ログオフスクリプトはこちらを参考にさせて頂きました。
“\\AD01”は、スクリプトを配置する DC 名を指定します。
On Error Resume Next ' EVENTLOG_DC_NAME: イベントログを記録させたいDC名をUNCで指定 Const EVENTLOG_DC_NAME = "\\AD01" ' SCRIPT_PRE_MESSAGE: イベントログに書き込むメッセージの最初の文言 Const SCRIPT_PRE_MESSAGE = "[端末からログオフしました。] " ' WshShellオブジェクトとADSIオブジェクトを生成、取得 Set objShell = WScript.CreateObject("WScript.Shell") Set objADSystemInfo = WScript.CreateObject("ADSystemInfo") ' ADのユーザーオブジェクトを取得 Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName) ' ADのユーザーオブジェクトのGroupsプロパティから、所属グループ名を取得 strGroupNames = "MemberOf: CN=Domain Users" For Each objGroup In objUser.Groups strGroupNames = strGroupNames & "," & objGroup.Name Next ' EventCreateコマンドでイベントログを書き込む。 objShell.Run "EVENTCREATE /S " & EVENTLOG_DC_NAME & " /T INFORMATION /L APPLICATION /ID 8 /D " & """" & SCRIPT_PRE_MESSAGE & strGroupNames & """", 7, True ' 事後処理 Set objShell = Nothing Set objADSystemInfo = Nothing Set objUser = Nothing
スクリプトの配置
スクリプトは以下のパスに配置します。※任意のパスでは実行されないので注意してください。
\\DC名\sysvol\ドメイン名\scrpits\
本例では、以下のパスに配置しています。
\\ad01\sysvol\example.com\scripts
GPO の設定
GPO を設定します。本例では「DaaS Users」というユーザ OU に、「Audit」と名前のポリシーをリンクしています。
「Audit」ポリシーで「ログオフスクリプト」を指定します。
GPO を更新します。
gpupdate /force
アクセス権の設定
通常、イベントビューワーへの書き込みは Domain_Admins グループに属するアカウントでのみ許可されています。一般ユーザーで書き込みができるようDC 上で、以下のコマンドを実行します。
wevtutil sl application /ca:O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)(A;;0x3;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)(A;;0x3;;;DU)
イベントビューワーの出力結果
ドメイン環境化の端末からユーザーがログオフすると、AD のイベントビューワーの「WIndows ログ」「Application」でログオフ時間を確認できます。
以上