URL から "-MoIyadayo" を削除してトラックバックを送信してください。
トラックバックは承認後に表示されます。
Windowsのログオン状況を記録する必要がある場合,ドメインコントローラでログオンイベントの監査で「成功の監査」を設定する方法が考えられ ますが,これはあるPCからドメインにログオンした時だけではなく,本当にログオフするまでの間に何度となくログオン,ログオフが記録されます。実際にロ グオン動作をしたとかログオフしたとかを正確に記録することはできません。
グループポリシーの中のユーザーの構成/Windowsの設定/スクリプトにログオンの時と,ログオフの時に実行するスクリプトを設定することができます。そこで,簡単なスクリプトを動かして,ログオンとログオフの記録を取る方法を考えました。
スクリプトの仕様としては,次のようなフィールドを持つCSV形式のレコードをログファイルに追加書き込みすることとします。
コラム | フィールド内容 | 備考 |
1 | イベント | ログオンであるかログオフであるか |
2 | 時刻 | 日付と時刻 |
3 | コンピュータ名 | ログオン(オフ)したコンピュータ名 |
4 | ユーザ名 | ログオン(オフ)したユーザ名 |
5 | ドメイン名 | |
6 | IPアドレス | 複数ある場合は;で区切ってそのPCの全てのIPを記録 |
3~6のデータをについてはWMIを使って取得し,FileSystemObjectを使ってテキストファイルに出力します。
'ログオン・ログオフイベントを記録するスクリプト sEvent = "LogOn" 'ログオフ用はここを変更する sFileName = "\\server01\log\logon" & _ Year(Now) * 100 + Month(Now) & ".log" On Error Resume Next Set FSO = CreateObject("Scripting.FileSystemObject") Set wshNetwork = CreateObject("WScript.Network") SearchPC = wshNetwork.ComputerName Set objComputer = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & SearchPC) Set NICs = objComputer.ExecQuery("select * from Win32_NetworkAdapterConfiguration") For Each Adapter In NICs if UCase(Adapter.DNSHostName) = UCase(SearchPC) then IPAddress = Adapter.IPAddress IPSubnet = Adapter.IPSubNet DefaultIPGateway = Adapter.DefaultIPGateway sIP = "" sSubNet = "" sGateway = "" If IsArray(IPAddress) Then For I = LBound(IPAddress) To UBound(IPAddress) sIP = sIP & IPAddress(I) & ";" sSubNet = sSubNet & IPSubnet(I) & ";" sGateway = sGateway & DefaultIPGateway(I) & ";" Next sMAC = Adapter.MACAddress sWINS1 = Adapter.WINSPrimaryServer sWINS2 = Adapter.WINSSecondaryServer End If exit for end if Next sMsg = sEvent & "," & _ Now & "," & _ wshNetwork.ComputerName & "," & _ wshNetwork.UserName & "," & _ wshNetwork.UserDomain & "," & _ sIP set oText = FSO.OpenTextFile(sFileName, 8, true, 0) oText.WriteLine(sMsg) oText.Close
このスクリプトをポリシーのログオンスクリプトに設定し,スクリプトの先頭にあるsEventをLogOffに変えたものをログオフスクリプトに設 定します。sFileNameは,Logを記録する共有フォルダのUNCを指定します。この例ではファイル名の指定で月ごとにファイルが変わるようにして あります。