代码之家  ›  专栏  ›  技术社区  ›  Christopher

LogParser输出和PowerShell

  •  1
  • Christopher  · 技术社区  · 15 年前

    我正在使用下面的PowerShell函数分析从远程计算机本地保存的事件日志。不幸的是,我一辈子都不知道如何将数据转储到另一种格式,而不仅仅是控制台窗口。

    在SQL查询中插入INTO语句时,会出现以下错误:

    使用“2”参数调用“execute”时出现异常:“调用execute()时无法指定into实体[参数不正确]。”

    非常感谢您的帮助。

        Function Parse-Event-Logs
    {
    
    $logtypes = "Application","System","Security"
    foreach ($logtype in $logtypes)
    {
    $log_file = $LogsArchive + "\" + $folder + "\" + $logtype + ".evt"
    $log_parser = new-object -comobject MSUtil.LogQuery
    $log_type = new-object -comobject MSUtil.LogQuery.EventLogInputFormat
    $log_type.resolvesids = $true
    $log_type.fulltext = $true
    $output_type = new-object -comobject MSUtil.LogQuery.NativeOutputFormat
    $log_query = "SELECT * FROM $log_file  WHERE EventTypeName = 'Error event' OR EventTypeName = 'Warning event'"
    
    $log_recs = $log_parser.execute($log_query,$log_type)
    try{
    do{
    $lp_return = @{}
    $log_entry = $log_recs.getrecord()
    
    $lp_return.add("Index",$log_entry.getvalue("RecordNumber"))
    $lp_return.add("EntryType",$log_entry.getvalue("EventTypeName"))
    $lp_return.add("EventID",$log_entry.getvalue("EventID"))
    $lp_return.add("Message",$log_entry.getvalue("Message"))
    $lp_return.add("Category",$log_entry.getvalue("EventCategoryName"))
    $lp_return.add("CategoryNumber",$log_entry.getvalue("EventCategory"))
    $lp_return.add("ReplacementStrings",$log_entry.getvalue("Strings"))
    $lp_return.add("Source",$log_entry.getvalue("SourceName"))
    $lp_return.add("TimeGenerated",$log_entry.getvalue("TimeGenerated"))
    $lp_return.add("TimeWritten",$log_entry.getvalue("TimeWritten"))
    $lp_return.add("UserName",$log_entry.getvalue("SID"))
    $lp_return | new-hashobject
    
    $log_recs.movenext()
    } while ($log_recs.atend() -eq $false)
    }
    
    Catch {Write-Host "Event log is empty"}
    }
    }
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Keith Hill    15 年前

    好,将注释转换为答案。-)

    使用ExecuteBatch方法而不是Execute方法。ExecuteBatch允许传入输入和输出类型。

    推荐文章