В течение некоторого времени я использовал этот скрипт для просмотра времени входа в систему для определенного компьютера:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\Windows\setupact.log")
Wscript.Echo "Log on today at " & FormatDateTime(objFile.DateLastModified,vbShortTime)

Это компьютер под управлением Windows 7 Enterprise с установленным пакетом обновления 1. Это связано с доменом, и я не могу изменить групповую политику.

Можно ли изменить скрипт для регистрации времени входа и выключения? И, если да, возможно ли зафиксировать это за определенный период (например, за предыдущую неделю или предыдущие 28 дней)? Скрипт не обязательно должен сохранять / сохранять эту информацию - я могу жить только с возможностью его просмотра.

Я тоже сталкивался с этим вопросом, но он мне не сильно помог (кроме того, что он открыл мне глаза на Event Viewer.

С тех пор я обнаружил, что могу вручную просматривать нужную информацию, просматривая различные журналы в средстве просмотра событий, но я не уверен, есть ли какой-то способ использовать эту информацию в сценарии или нет. Очевидно, эта информация должна храниться где-то в системе, но я не совсем уверен, где и доступна ли она.

Любые предложения будут наиболее ценными.

1 ответ1

0

Я нашел скрипт, который может удовлетворить ваши потребности:

Option Explicit

Dim strComputer, objWMIService, colEvents, objEvent
Dim dtmStart, dtmEnd, strUser

strComputer = "West204"
dtmStart = "20091228000000.000000-360"
dtmEnd = "20100101000000.000000-360"
strUser = "MyDomain\jsmith"
strUser = "jsmith"

Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate,authenticationLevel=Pkt,(Security)}!\\" _ 
    & strComputer & "\root\cimv2") 

Set colEvents = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security' AND " _
        & "TimeWritten >= '" & dtmStart & "' AND TimeWritten < '" _
        & dtmEnd & "' AND " _
        & "(EventCode = '528' OR EventCode = '540' OR EventCode = '538')")

For Each objEvent In colEvents
    Wscript.Echo "---------------------------"
    Wscript.Echo "Computer: " & objEvent.ComputerName
    Wscript.Echo "Event Code: " & objEvent.EventCode
    Wscript.Echo "Message: " & objEvent.Message
    Wscript.Echo "Time: " & objEvent.TimeWritten
    Wscript.Echo "Event Type: " & objEvent.EventType
    Wscript.Echo "User: " & objEvent.User
Next

Просто замените strComputer , dtmStart , dtmEnd , strUser и strUser своей информацией.

Эти запросы всегда медленные. Я попытался добавить предложение WHERE для пользователя, но не смог заставить его работать, поэтому выходные данные будут включать все события входа / выхода из системы между датами. Я также ожидал, что большее количество предложений WHERE сделает запрос быстрее, но, похоже, это не сработает. Запустите сценарий из командной строки и перенаправьте вывод в текстовый файл. Формат даты: ггггммддччммсс.сссссс-zzz, где -zzz - это смещение вашего часового пояса в минутах (от UTC)

источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .