Модифікація сценарію для захоплення часу входу / вимикання в Windows


0

Деякий час я використовую цей сценарій для перегляду мого часу входу для певного комп'ютера:

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 днів)? Сценарій не обов'язково повинен зберігати / зберігати цю інформацію - я можу жити тільки з можливістю переглядати її.

Я також натрапив на це питання , але це не допомогло мені багато чого (крім того, що він відкрив мені очі для перегляду подій.

З тих пір я виявив, що я можу вручну переглянути інформацію, яка мені потрібна, переглядаючи різні журнали у засобі перегляду подій, але я не впевнений, що є певний спосіб використовувати цю інформацію в сценарії чи ні. Очевидно, що ця інформація повинна бути «збережена» десь у системі, але я не зовсім впевнений, де і чи є вона доступною.

Будь-які пропозиції були б високо оцінені.


Чи підключено цей комп'ютер до домену? Якщо так, чи можна змінити групову політику?
Brian Duke

Так, і ні, я не можу змінювати групову політику. Я оновлю моє запитання, щоб згадати ці факти.
Monomeeth

Відповіді:


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   пункти, щоб зробити запит швидше, але це, здається, не працює   До речі. Запустіть скрипт у командному рядку та перенаправте вивід на   текстовий файл. Формат дати - yyyymmddhhmmss.ssssss-zzz, - -zzz   зміщення місцевого часового поясу за лічені хвилини (від UTC)

джерело


Дякуємо за це. На жаль, це не працює. Або я просто не можу змусити його працювати. Я змушую його запускати, але висновок завжди однаковий: Microsoft (R) Хост сценарію Windows Версія 5.8 Авторське право (C) Корпорація Microsoft. Всі права захищені. Тобто після цього нічого більше.
Monomeeth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.