Estoy escribiendo un script que necesita consultar cuándo varios usuarios del dominio iniciaron sesión por última vez en una máquina. Pensé que podría hacerlo con la última fecha de acceso de \ docs y settings \ username, pero nuestra herramienta de respaldo arruinó ese plan.

Luego miré el uso de WMI_UserProfile pero eso solo consulta perfiles locales. Eso me llevó a WNI_NetworkLoginProfile, pero parece que solo puedo obtener la fecha de inicio de sesión del usuario que inició sesión. ¿Es posible consultar la última fecha de inicio de sesión para varios usuarios utilizando WNI_NetworkLoginProfile o hay algo más que pueda consultar?

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
chemist 2 abr. 2012 a las 15:01

1 respuesta

La mejor respuesta

Prueba usando la herramienta de línea de comandos wmic como:

C:\> WMIC PATH Win32_NetworkLoginProfile GET Name,LastLogon

Me muestra los datos de todos los usuarios de mi máquina. Esto me hace preguntarme si esto está limitado a si tiene derechos administrativos o no. En una caja con Windows Vista / 7/2008, esto también puede significar que el Control de acceso del usuario le impide ver todos los datos.

Intente forzar su secuencia de comandos para que se ejecute como administrador.

2
Chris J 2 abr. 2012 a las 15:28
Gracias, corriendo que devuelve todos los perfiles de usuario y fechas. Por alguna razón, mi guión no
 – 
chemist
2 abr. 2012 a las 16:15
Publique su guión para que otros puedan verlo.
 – 
Chris J
2 abr. 2012 a las 19:33