Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Время входа в систему (http://forum.oszone.net/showthread.php?t=168757)

Jeesus 28-02-2010 01:48 1357818

Время входа в систему
 
Доброго времени суток!
Подскажите плз как получить время входа в систему?

Petya V4sechkin 28-02-2010 09:38 1357891

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


amel27 01-03-2010 11:06 1358667

то же самое через 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:

amel27 01-03-2010 12:52 1358731

на сервере можно определить через Query User/QUser, эту утилиту можно скопировать и на станцию:
Код:

@Echo Off

For /F "Skip=1 Tokens=1*" %%i In ('Query User "%UserName%"') Do Set $L=%%j
Echo %$L:~-16%


NiOl 01-03-2010 14:47 1358827

Цитата:

Цитата amel27
на сервере можно определить через Query User/QUser, эту утилиту можно скопировать и на станцию: »

У меня почему-то это давно не работает. :(

а список из LogonType у меня 0,2,3,5 - 10 го нет.

amel27 02-03-2010 03:29 1359247

Цитата:

Цитата NiOl
У меня почему-то это давно не работает. »

не сталкивался, в чем это выражается - не работает утилита или не показывает дату?

Цитата:

Цитата NiOl
10 го нет »

это удаленные терминальные подключения, для XP их нет


Время: 16:50.

Время: 16:50.
© OSzone.net 2001-