ログオンスクリプトとログオフスクリプト

何となくWindows OS用のログオンスクリプトとログオフスクリプトを作ってみました。おそらくWindows XP以降のOSであれば稼働するはずです。
利用する場合には、グループポリシーから設定してください。

ログオンスクリプト

ログインユーザ名を取得してイベントログに書き込みます。

00121

On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")
Set WshShell   = WScript.CreateObject("WScript.Shell")

strUser     = objSysInfo.UserName
strComputer = objSysInfo.ComputerName

Set objUser = GetObject("LDAP://" & strUser)
strMessege  = "ログオンスクリプトが起動しました。" & vbCrLf _
			& objUser.displayName & "(" & objUser.userPrincipalName & ")がログインしました。"

WshShell.LogEvent 0, strMessege

ログオフスクリプト

ログインユーザ名と端末の起動開始時間、および連続稼働時間をイベントログに書き込みます。

0028

On Error Resume Next

'---------------プログラムここから---------------

Set objSysInfo = CreateObject("ADSystemInfo")
Set WshShell   = WScript.CreateObject("WScript.Shell")

strUser     = objSysInfo.UserName
strComputer = "."

Set objUser = GetObject("LDAP://" & strUser)
strMessege  = "ログオフスクリプトが起動しました。" & vbCrLf &_
            objUser.displayName & "(" & objUser.userPrincipalName & ")がログオフしました。" & vbCrLf &_
            QUERY_UPTIME(strComputer)

'イベントログの書き込み
WshShell.LogEvent 0, strMessege

'---------------プログラムここまで---------------

Function QUERY_UPTIME(strComputer)
    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")

    For Each objOS in colOperatingSystems
        dtmBootup         = objOS.LastBootUpTime
    Next

    dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
    dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)

    QUERY_UPTIME = "このコンピュータが起動した時刻は" & dtmLastBootupTime & "です。" & vbCrLf &_
    "現在の連続稼働時間は約" & dtmSystemUptime & "時間です。"

End Function

Function WMIDateStringToDate(dtmBootup)
    WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" &_
    Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) & _
     " " & Mid (dtmBootup, 9, 2) & ":" & Mid(dtmBootup, 11, 2) &_
     ":" & Mid(dtmBootup, 13, 2))
End Function

ログオン時に経過時間を取得して、3日とか4日とか連続で起動している端末があったら、ポップアップで警告を出したり、もしくはログイン時に再起動を仕込んでみたり・・・とか、面白いですが問題になりそうですね。

参考リンク

Hey, Scripting Guy! サーバーが再起動されたかどうかを確認する方法はありますか

コメントを残す

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