从Windows事件查看器中提取错误日志

时间:2014-02-12 19:50:22

标签: windows vbscript ftp

我想创建VBScript代码以从Windows事件查看器中专门检索错误类型日志,将它们保存在.txt文件中,然后通过FTP传输或直接复制。

我怎样才能做到这一点?

我一直在做一些阅读并偶然发现这些页面:

Main questionEventquery.vbs infoCopy file to remote computer

但我只是不明白如何将这个过程作为一个整体。

4 个答案:

答案 0 :(得分:2)

您可以通过启动电源shell轻松完成此操作。

在PowerShell中过滤事件日志以查找错误的一种简单方法是

Get-EventLog -LogName APPLICATION -EntryType Error

如果需要,您可以轻松地将其作为批处理脚本或vbscript的一部分。

要将其重定向到文本文件,yon可以使用以下内容:

Get-EventLog -LogName APPLICATION -EntryType Error > Result.txt

然后,您需要将文本文件上传到FTP

答案 1 :(得分:2)

您可以使用WMI查询查询事件日志。以下是有关specific class

的信息

在不确切知道您要查找的内容的情况下,我们假设您要搜索应用程序事件日志并记录任何事件ID 1003.我使用On Error Resume Next作为快速修复,因此如果字段不会出错不包含数据。

On Error Resume Next
LOG_FILE = "temp.txt"

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE LogFile='Application'")

For Each objEventin colItems
    If objEvent.EventCode = 1003 Then       
        writeLog "Category: " & objEvent.Category
        writeLog "Category String: " & objEvent.CategoryString
        writeLog "Computer Name: " & objEvent.ComputerName
        writeLog "Data: " & objEvent.Data
        writeLog "Event Code: " & objEvent.EventCode
        writeLog "Event Identifier: " & objEvent.EventIdentifier
        writeLog "Insertion Strings: " & objEvent.InsertionStrings
        writeLog "Logfile: " & objEvent.Logfile
        writeLog "Message: " & objEvent.Message
        writeLog "Record Number: " & objEvent.RecordNumber
        writeLog "Source Name: " & objEvent.SourceName
        writeLog "Time Generated: " & objEvent.TimeGenerated
        writeLog "Time Written: " & objEvent.TimeWritten
        writeLog "Type: " & objEvent.Type
        writeLog "User: " & objEvent.User 
        writeLog ""  
    End If
Next

Sub writeLog(strText)
  Dim objFSO, objLogFile

  Set objFSO = CreateObject("Scripting.FileSystemObject")  
  Set objLogFile = objFSO.OpenTextFile(LOG_FILE, 8, True)

  objLogFile.WriteLine strText
  objLogFile.Close

  Set objLogFile = Nothing
  Set objFSO = Nothing

End Sub

答案 2 :(得分:1)

在“事件查看器”中,您可以转到左侧的“自定义视图”,管理事件。它具有来自72个不同日志的严重,错误和警告(1、2和3级)事件(Windows API的日志名称查询限制为256个)。我认为这些是最重要的日志。您可以单击右侧的“将自定义视图中的所有事件另存为...”,然后选择格式:evtx,xml,txt或csv。我在计算机上收到约4000个事件。

如果您愿意使用powershell,可以在一段时间后使用foreach循环搜索 all 日志中的错误。 “ -ea 0”是“ -erroraction悄悄地继续”的缩写。

$a = get-winevent -listlog * | foreach { get-winevent @{ 
  logname = $_.logname;
  starttime = '5/2/2020 12:53 pm'; level = 1,2,3 } -ea 0 } |
  where message -match 'whatever' 
$a.count
67

$a | export-csv file.csv

答案 3 :(得分:-2)

这一行

对于每个objEventin colItems

必须像这样纠正 对于colItems中的每个objEvent