我想创建VBScript
代码以从Windows事件查看器中专门检索错误类型日志,将它们保存在.txt
文件中,然后通过FTP传输或直接复制。
我怎样才能做到这一点?
我一直在做一些阅读并偶然发现这些页面:
Main question,Eventquery.vbs info和Copy file to remote computer。
但我只是不明白如何将这个过程作为一个整体。
答案 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