NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

GPO でログオフ時間を記録する方法について

ドメイン環境化において、ユーザが端末からログオフした時間を、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」と名前のポリシーをリンクしています。
f:id:FriendsNow:20181104150241p:plain

「Audit」ポリシーで「ログオフスクリプト」を指定します。
f:id:FriendsNow:20181104150357p:plain

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」でログオフ時間を確認できます。
f:id:FriendsNow:20181104151059p:plain

以上

ONTAP9.4 の重複排除効果監視について

ONTAP Simulator 9.4 を使用したテスト環境の構築と、重複排除効果を監視する方法をご紹介します。

環境構築手順(簡易版)

disk 追加~Aggr 作成

storage disk assign -all true -node cl-01
storage aggregate create -aggregate aggr1 -raidtype raid_dp -diskcount 20 -nodes cl -maxraidsize 28

※root volume 拡張(オプション)
ONTAP Simulator の初期セットアップ後、以下のエラーが出力される場合があります。

CRITICAL: This node is not healthy because the root volume is low on space
(<10MB). The node can still serve data, but it cannot participate in cluster
operations until this situation is rectified. Free space using the nodeshell or
contact technical support for assistance.

そのため、以下の手順で root volume のサイズを拡張しておきます。

storage aggregate add-disks -aggregate aggr0_cl_01 -diskcount 3
run -node cl-01 vol size vol0 +1g
storage aggregate show -node cl-01 -root true
volume show -node cl-01 -aggregate aggr0_cl_01

SVM 作成~LIF(CIFS 用)作成

vserver create -vserver vs -aggregate aggr1
network interface create -vserver vs -lif lif-cifs -role data -data-protocol cifs -home-node cl-01 -home-port e0a -address 10.1.1.21 -netmask 255.255.255.0

ライセンス登録~volume 作成

license add -license-code "License Code"
volume create -vserver vs -volume vol1 -aggregate aggr1 -size 10g -security-style ntfs -space-guarantee none -junction-path /vol1

時刻設定~CIFS 設定

timezone Asia/Tokyo
system date modify -dateandtime 201810201926.48
vserver services dns create -vserver vs -domains example.com -name-servers 10.1.1.120
cifs create -cifs-server cifs -domain example.com -vserver vs
Enter the user name: Administrator
Enter the password:
vserver cifs share create -vserver vs -share-name vol1 -path /vol1

重複排除設定と効率の確認

volume efficiency on -vserver vs -volume vol1

効率化によるスペース削減量の表示(出力結果抜粋)

volume show -vserver vs -volume vol1
<...snip...>
Space Saved by Deduplication: 119.6MB	<---重複排除によって節約された領域
Percentage Saved by Deduplication: 2%	<---重複排除によって節約された割合
<...snip...>

重複排除効率の監視

NetApp PowerShell Toolkit Installerとタスクスケジューラを使用して、重複排除効率化の定期的な監視を行うことができそうです。以下のファイルを実行してインストールします。

NetApp_PowerShell_Toolkit_4.6.0.msi 

PowerShell スクリプトを利用して重複排除効率を確認可能です。
スクリプト

$netapp = "192.168.1.21"
$user = "admin"
$pass = "password"
$volname = "vol1"

#-------------------------------------------------------------------------
# function Efficiency-Status
#-------------------------------------------------------------------------
function Efficiency-Status()
{
   $outfile = "C:\Efficiency_status.log"
   $logdata = "Efficiency_Status"
   $logdata | out-file $outfile -append
   Get-Date -Format g >> $outfile
   Get-NcVol $volname | select @{Name="Volume"    ; Exp={$_.name}}, 
               @{Name="Total(MB)" ; Exp={[math]::Truncate(($_ | Get-NcVol).TotalSize/1MB)}},
               @{Name="Used(%)"   ; Exp={($_ | Get-NcVol).Used}},
               @{Name="Avail(MB)" ; Exp={[math]::Truncate(($_ | Get-NcVol).Available/1MB)}},
               @{Name="Saved(MB)" ; Exp={[math]::Round(($_ | Get-NcEfficiency $volname).Returns.Dedupe/1MB)}} | Format-Table -autosize >> $outfile
   write-output ""`n >> $outfile
}

#-------------------------------------------------------------------------
# Do-Initialize
#-------------------------------------------------------------------------
$password = ConvertTo-SecureString $pass -asplaintext -force
$cred = New-Object System.Management.Automation.PsCredential $user,$password

Import-Module DataOnTap
Connect-NaController $netapp -cred $cred 

#-------------------------------------------------------------------------
# Main Application Logic
#-------------------------------------------------------------------------
Efficiency-Status

以上