запрос последний раз вошел в систему для нескольких пользователей - PullRequest
1 голос
/ 02 апреля 2012

Я пишу скрипт, который должен запрашивать, когда несколько пользователей домена последний раз заходили на компьютер. Я думал, что смогу сделать это с последней доступной датой \ docs and settings \ username, но наш инструмент резервного копирования уничтожил этот план.

Затем я посмотрел на использование WMI_UserProfile, но оно запрашивает только локальные профили. Так что это привело меня к WNI_NetworkLoginProfile, но я, похоже, смог получить только дату входа для вошедшего в систему пользователя. Можно ли запросить дату последнего входа для нескольких пользователей, используя WNI_NetworkLoginProfile, или я могу запросить что-то еще?

On Error Resume Next

Set WshNetwork = CreateObject("Wscript.Network")
strComputer = WshNetwork.ComputerName

strDayOfMonth = Right("0" & Day(Date()),2)
strMonth = Right("0" & Month(Date()),2)
strYear = Right (Year(Date()),4)
strDate = strDayOfMonth & "/" & strMonth & "/" & strYear

oLast = DateAdd("d", -60, strDate)

Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True   
objRegEx.IgnoreCase = True
objRegEx.Pattern = "NT AUTHORITY\SYSTEM|NT AUTHORITY\SYSTEM|NT AUTHORITY\LOCAL SERVICE|NT AUTHORITY\NETWORK SERVICE"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkLoginProfile")

For Each objItem in colItems
dtmAccessTime = objItem.LastLogon
strReturn = WMIDateStringToDate(dtmAccessTime)
strUsers = objItem.Name
Set colMatches = objRegEx.Execute(strUsers)
If colMatches.Count < 1 Then
    strfolder = objFolder.Name
    Wscript.Echo objItem.Name & " " & strReturn
End If
Next

' Format Time and Date
 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

1 Ответ

2 голосов
/ 02 апреля 2012

Тестирование с использованием инструмента командной строки wmic as:

C:\> WMIC PATH Win32_NetworkLoginProfile GET Name,LastLogon

показывает мне данные всех пользователей на моей машине. Это заставляет меня задуматься, не связано ли это с тем, есть ли у вас административные права или нет. В Windows Vista / 7/2008 это также может означать, что контроль доступа пользователей не позволяет просматривать все данные.

Попробуйте принудительно запустить скрипт как администратор.

...