0

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

我怎样才能做到这一点?

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

主要问题Eventquery.vbs 信息复制文件到远程计算机

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

4

4 回答 4

2

您可以使用 WMI 查询来查询事件日志。这是有关特定类的信息。

在不确切知道您要查找的内容的情况下,假设您想要搜索应用程序事件日志并记录任何事件 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 objEvent in 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
于 2014-02-12T22:21:57.903 回答
2

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

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

Get-EventLog -LogName APPLICATION -EntryType Error

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

要将其重定向到文本文件,可以使用以下命令:

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

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

于 2014-02-12T21:47:43.237 回答
1

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

如果您愿意深入研究 powershell,则可以使用 foreach 循环搜索所有日志中的错误。“-ea 0”是“-erroraction silentlycontinue”的缩写。

$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
于 2020-05-01T03:39:11.170 回答
-2

这条线

对于每个 objEventin colItems

必须像这样为 colItems 中的每个 objEvent 更正

于 2016-12-11T17:53:05.363 回答