Usuário com melhor resposta
Script puxar eventos

Pergunta
-
Respostas
-
Victor,
Você não deve ler diretamente no arquivo, vc deve utilizar o WMI.
Veja um exemplo para ler os logs de segurança (para colocar no Excel retire os wscript e coloque no lugar código para escrever em células)
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Security)}!\\" & _ strComputer & "\root\cimv2") Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * FROM Win32_NTLogEvent WHERE Logfile = 'Security'" ) For Each objEvent in colLoggedEvents Wscript.Echo "===================================================" Wscript.Echo "Category: " & objEvent.Category Wscript.Echo "Computer Name: " & objEvent.ComputerName Wscript.Echo "Event Code: " & objEvent.EventCode Wscript.Echo "Message: " & objEvent.Message Wscript.Echo "Record Number: " & objEvent.RecordNumber Wscript.Echo "Source Name: " & objEvent.SourceName Wscript.Echo "Time Written: " & objEvent.TimeWritten Wscript.Echo "Event Type: " & objEvent.Type Wscript.Echo "User: " & objEvent.User Wscript.Echo Next
Vc pode adicionar filtro para retornar apenas determinado evento, ou apenas de uma data em diante, etc
Obs.: Para ler o log de segurança vc deve executar este código como administrador da estação (mais este problema pra vc, porque o usuário que vai usar a planilha é administrador? Então já indico novamente aquela solução do login script).
Links:
Hey, Scripting Guy! Can I Retrieve Just Failure Events from the Security Event Log?Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator quinta-feira, 19 de abril de 2012 13:38
- Marcado como Resposta Victor Resende Petroveski quinta-feira, 19 de abril de 2012 14:28
-
é o Windows Management Instrumentation, com ele vc consegue acessar várias informações do Windows e configurar\alterar dados.
Neste script que enviei eu consulto a classe Win32_NTLogEvent, esta classe fornece meios de acessar os logs do windows.
Windows Management Instrumentation
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582(v=vs.85).aspx
Fábio de Paula Junior
- Editado Fábio JrModerator quarta-feira, 18 de abril de 2012 17:21 correção
- Marcado como Resposta Victor Resende Petroveski quinta-feira, 19 de abril de 2012 14:28
Todas as Respostas
-
Victor,
Pelo fato de ser VBA imagino que você queria dentro do Excel consultar os eventos e salvar diretamente na planilha, certo?
Caso esse seja o caso acho que não seja possível, ou pelo menos não com facilidade. No seu caso eu acho mais fácil um Script em Powershell que lê os eventos que você quer e crie uma planilha do Excel usando objetos COM. O resultado final seria o mesmo, ou até com algumas coisas mais fáceis de implementar.
Se for esse o caso avise aqui que eu posto um script de como fazer isso.
-
-
- Editado Rafael S. AMARAL sexta-feira, 6 de abril de 2012 14:36
-
-
Boa Tarde Victor,
Eu tenho um que você executa e informa de todos os usuários. Já formatado em CSV. Veja se te ajuda. Nesse caso você não precisa jogar no script de logon do usuário.
Const ForWriting = 2 On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") strOU = "DC=xxx,DC=xxx,DC=xxx" strFileName = "\\XXX\XXX\output.csv" Set objLogFile = objFSO.CreateTextFile(strFileName, ForWriting) objLogFile.WriteLine "DN" & vbTab & "CN" & vbTab & "Description" _ & vbTab & "LastLogOnTimeStamp" Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.CommandText = _ "<LDAP://" & strOU & ">;" & "(&(objectclass=user)(objectcategory=person));" & _ "adspath,distinguishedname,sAMAccountName;subtree" Set objRecordSet = objCommand.Execute Do Until objRecordSet.EOF Set objUser = GetObject(objRecordSet.Fields("adspath").Value) Set objLastLogon = objUser.Get("lastLogonTimestamp") intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart intLastLogonTime = intLastLogonTime / (60 * 10000000) intLastLogonTime = intLastLogonTime / 1440 objLogFile.WriteLine objuser.Get("distinguishedname") & vbTab _ & objuser.Get("sAMAccountName") & vbTab _ & objuser.Get("description") & vbTab _ & intLastLogonTime + #1/1/1601# objRecordSet.MoveNext Loop objRecordSet.Close Set objRecordSet = Nothing Set objCommand = Nothing objConnection.Close Set objConnection = Nothing objLogFile.Close
Rafael S. AMARAL
U. P. Mackenzie- Editado Rafael S. AMARAL segunda-feira, 9 de abril de 2012 20:26
-
Eu consigo um que somente capture os eventos, eu quero capturar o evento de logon da propria maquina do usuario, não do server.
Ou seja, eu iria capturar este evendo e ia jogar pro exemplo no Excel ou em um sistema que possa desenvolver.
Victor R. Petroveski Gestor de TI
-
-
Puxar de cada máquina vai dar muito trabalho.
Qual é o sistema operacional da máquina dos seus usuários?
Sugestões:
Se for tudos Windows Vista ou superior: Crie assinaturas para enviar o log para um só servidor então vc lê o log de apenas um lugar.
Se for inferior ao Vista:
1) Fazer a macro que busca todos os computadores da rede :-( buscando o log , vc pode utilizar WMI dentro da MACRO
outra opção (gosto mais)
2) Adicionar\criar um script de logon que grava em um arquivo texto na rede o nome da máquina, usuário e horário que ele está fazendo o logon. Aqui no fórum tem exemplos deste script, tendo este arquivo fica ainda mais fácil importar para o excel.
Fábio de Paula Junior
-
-
-
Fabio, obrigado pelo apoio até então.
Então seria muito bom se eu soubesse aonde ficam esses logs tambem, digo nos arquivos de texto mesmo.
- System - Provider [ Name] Microsoft-Windows-Security-Auditing [ Guid] {54849625-5478-4994-A5BA-3E3B0328C30D} EventID 4648 Version 0 Level 0 Task 12544 Opcode 0 Keywords 0x8020000000000000 - TimeCreated [ SystemTime] 2012-04-18T11:07:00.416310700Z EventRecordID 94237 Correlation - Execution [ ProcessID] 660 [ ThreadID] 744 Channel Security Computer NTVICTOR Security - EventData SubjectUserSid S-1-5-18 SubjectUserName NTVICTOR$ SubjectDomainName WORKGROUP SubjectLogonId 0x3e7 LogonGuid {00000000-0000-0000-0000-000000000000} TargetUserName Victor TargetDomainName NTVICTOR TargetLogonGuid {00000000-0000-0000-0000-000000000000} TargetServerName localhost TargetInfo localhost ProcessId 0x2fc ProcessName C:\Windows\System32\winlogon.exe IpAddress 127.0.0.1 IpPort 0
Victor R. Petroveski Gestor de TI
-
Victor,
Você não deve ler diretamente no arquivo, vc deve utilizar o WMI.
Veja um exemplo para ler os logs de segurança (para colocar no Excel retire os wscript e coloque no lugar código para escrever em células)
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Security)}!\\" & _ strComputer & "\root\cimv2") Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * FROM Win32_NTLogEvent WHERE Logfile = 'Security'" ) For Each objEvent in colLoggedEvents Wscript.Echo "===================================================" Wscript.Echo "Category: " & objEvent.Category Wscript.Echo "Computer Name: " & objEvent.ComputerName Wscript.Echo "Event Code: " & objEvent.EventCode Wscript.Echo "Message: " & objEvent.Message Wscript.Echo "Record Number: " & objEvent.RecordNumber Wscript.Echo "Source Name: " & objEvent.SourceName Wscript.Echo "Time Written: " & objEvent.TimeWritten Wscript.Echo "Event Type: " & objEvent.Type Wscript.Echo "User: " & objEvent.User Wscript.Echo Next
Vc pode adicionar filtro para retornar apenas determinado evento, ou apenas de uma data em diante, etc
Obs.: Para ler o log de segurança vc deve executar este código como administrador da estação (mais este problema pra vc, porque o usuário que vai usar a planilha é administrador? Então já indico novamente aquela solução do login script).
Links:
Hey, Scripting Guy! Can I Retrieve Just Failure Events from the Security Event Log?Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator quinta-feira, 19 de abril de 2012 13:38
- Marcado como Resposta Victor Resende Petroveski quinta-feira, 19 de abril de 2012 14:28
-
-
é o Windows Management Instrumentation, com ele vc consegue acessar várias informações do Windows e configurar\alterar dados.
Neste script que enviei eu consulto a classe Win32_NTLogEvent, esta classe fornece meios de acessar os logs do windows.
Windows Management Instrumentation
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582(v=vs.85).aspx
Fábio de Paula Junior
- Editado Fábio JrModerator quarta-feira, 18 de abril de 2012 17:21 correção
- Marcado como Resposta Victor Resende Petroveski quinta-feira, 19 de abril de 2012 14:28