Показать полную графическую версию : Время входа в систему
Доброго времени суток!
Подскажите плз как получить время входа в систему?
Petya V4sechkin
28-02-2010, 09:38
Jeesus, если VBS устроит:
Set wshNetwork = CreateObject("WScript.Network")
strUser = LCase(wshNetwork.UserDomain & "\" & wshNetwork.UserName)
strComputer = "."
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSession = objWMI.ExecQuery("SELECT * FROM Win32_LogonSession" _
& " WHERE LogonType = 2 OR LogonType = 10")
For Each objSession In colSession
Set colUser = objWMI.ExecQuery("ASSOCIATORS OF" _
& " {Win32_LogonSession.LogonId=" & objSession.LogonId & "}" _
& " WHERE AssocClass=Win32_LoggedOnUser Role=Dependent")
For Each objUser In colUser
If LCase(objUser.Domain & "\" & objUser.Name) = strUser Then
Wscript.Echo "Время входа: " & WMIDateStringToDate(objSession.StartTime)
End If
Next
Next
Function WMIDateStringToDate(dtmStart)
WMIDateStringToDate = CDate( _
Mid(dtmStart, 5, 2) & "/" & _
Mid(dtmStart, 7, 2) & "/" & _
Left(dtmStart, 4) & " " & _
Mid (dtmStart, 9, 2) & ":" & _
Mid(dtmStart, 11, 2) & ":" & _
Mid(dtmStart, 13, 2))
End Function
Если имелось в виду время запуска системы:
strComputer = "."
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOS = objWMI.ExecQuery("SELECT LastBootUpTime FROM Win32_OperatingSystem")
For Each objOS In colOS
Wscript.Echo "Время запуска ОС: " & WMIDateStringToDate(objOS.LastBootUpTime)
Next
Function WMIDateStringToDate(dtmStart)
WMIDateStringToDate = CDate( _
Mid(dtmStart, 5, 2) & "/" & _
Mid(dtmStart, 7, 2) & "/" & _
Left(dtmStart, 4) & " " & _
Mid (dtmStart, 9, 2) & ":" & _
Mid(dtmStart, 11, 2) & ":" & _
Mid(dtmStart, 13, 2))
End Function
то же самое через CMD:
@Echo Off
For /F "Skip=1 Delims=" %%i In ('WMIC Path Win32_LoggedOnUser GET') Do CALL :PARSE %%i
Exit
:PARSE
For /F "UseBackQ Skip=1 Tokens=1* Delims=." %%i In (
`2^>Nul WMIC LOGON Where 'LogonId^="%~6" And ^(LogonType^=2 Or LogonType^=10^)' Get StartTime`
) Do If Not "%%j"=="" Set STime=%%i
If Defined STime ^
Echo %STime:~6,2%.%STime:~4,2%.%STime:~0,4% %STime:~8,2%:%STime:~10,2%:%STime:~12,2% %~2\%~4
Set STime=& GoTo :EOF
P.S. по ходу обнаружил, что одновременно могут висеть несколько интерактивных сеансов (LogonType=2), поэтому и пришлось оставить вывод списком - может кто в курсе что бы это значило?.. машина XP в домене, так что переключение пользователей не должно влиять... :unsure:
на сервере можно определить через Query User (http://technet.microsoft.com/en-us/library/cc788125(WS.10,printer).aspx)/QUser, эту утилиту можно скопировать и на станцию:
@Echo Off
For /F "Skip=1 Tokens=1*" %%i In ('Query User "%UserName%"') Do Set $L=%%j
Echo %$L:~-16%
на сервере можно определить через Query User/QUser, эту утилиту можно скопировать и на станцию: »
У меня почему-то это давно не работает. :(
а список из LogonType у меня 0,2,3,5 - 10 го нет.
У меня почему-то это давно не работает. »
не сталкивался, в чем это выражается - не работает утилита или не показывает дату?
10 го нет »
это удаленные терминальные подключения, для XP их нет
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.