Batch file 在Windows Server上备份事件日志的简单方法

Batch file 在Windows Server上备份事件日志的简单方法,batch-file,backup,event-log,Batch File,Backup,Event Log,是否可以创建一种简单的方法来备份事件日志,例如使用批处理文件或简单的应用程序? 我需要让它在一个客户的网站上工作,那里的参考是一个非专家用户。 谢谢如果您使用的是Windows 2008,请使用内置的wevtutil命令。例如: wevtutil epl应用程序c:\temp\foo.evtx 否则,请从资源工具包获取dumpel.exe,或从Microsoft脚本中心获取psloglist。Microsoft脚本中心提供了一些使用VBScript和WMI的示例代码 Frank Peter Sc

是否可以创建一种简单的方法来备份事件日志,例如使用批处理文件或简单的应用程序? 我需要让它在一个客户的网站上工作,那里的参考是一个非专家用户。
谢谢

如果您使用的是Windows 2008,请使用内置的wevtutil命令。例如:

wevtutil epl应用程序c:\temp\foo.evtx


否则,请从资源工具包获取dumpel.exe,或从Microsoft脚本中心获取psloglist。Microsoft脚本中心提供了一些使用VBScript和WMI的示例代码

Frank Peter Schultze的脚本站点有一些代码来清除事件日志(),您可以修改它以进行备份或备份,然后清除


如果您有权访问服务器,则可以通过右键单击日志并使用“将日志文件另存为…”命令从事件查看器进行备份。您可以保存为二进制、制表符分隔或逗号分隔的文件。

最后,我使用internet上的以下方法制作了一个小winapp:

public void DoBackup(string sLogName)
{
    string sBackup = sLogName;  // could be for example "Application"
    EventLog log = new EventLog();
    log.Source = sBackup;

    var query = from EventLogEntry entry in log.Entries
                orderby entry.TimeGenerated descending
                select entry;

    string sBackupName = sBackup+"Log";
    var xml = new XDocument(
        new XElement(sBackupName,
            from EventLogEntry entry in log.Entries
            orderby entry.TimeGenerated descending
            select new XElement("Log",
              new XElement("Message", entry.Message),
              new XElement("TimeGenerated", entry.TimeGenerated),
              new XElement("Source", entry.Source),
              new XElement("EntryType", entry.EntryType.ToString())
            )
          )
        );

    DateTime oggi = DateTime.Now;
    string sToday = DateTime.Now.ToString("yyyyMMdd_hhmmss");
    string path = String.Format("{0}_{1}.xml", sBackupName, sToday);
    xml.Save(Path.Combine(Environment.CurrentDirectory, path));
}
这是来源:


它只是工作得很好

使用powershell和导出clixml的oneliner

  get-eventlog -list | %{ get-eventlog $_.Log | export-clixml -path ($_.Log + ".xml") }