【问题标题】:Create Custom XPath for Time Created为创建时间创建自定义 XPath
【发布时间】:2017-07-13 10:27:05
【问题描述】:

我正在尝试读取在某个指定时间后生成的事件日志,但它给出了无效的查询字符串异常。

我已关注 msdn site 如何提供 xpaths,以下是我的实现。我的代码有什么问题。

var Date = "6/13/2017 3:51:10 PM";
        string queryString = "*[System/TimeCreated/@SystemTime >=" + Date + "]]";
        SecureString pw = GetPassword();

        EventLogSession session = new EventLogSession(
            "MachineName",                               // Remote Computer
            "DomainName",                                  // Domain
            "userName",                                // Username
            pw,
            SessionAuthentication.Default);

        pw.Dispose();
        EventLogQuery query = new EventLogQuery("Application", PathType.LogName, queryString);
        query.Session = session;

        try
        {
            EventLogReader logReader = new EventLogReader(query);
            for (EventRecord eventDetail = logReader.ReadEvent(); eventDetail != null; eventDetail = logReader.ReadEvent())
            {
                var date = eventDetail.TimeCreated;
            }

            // Display event info
        }
        catch (EventLogException e)
        {
            Console.WriteLine("Could not query the remote computer! " + e.Message);
            return;
        }

【问题讨论】:

    标签: c# .net c#-4.0 event-viewer


    【解决方案1】:

    在 XPath 中,您必须做两件事。首先,您必须引用日期值,因为它是一个字符串。其次,你必须使用 ISO 格式,因为这是它的格式。

     var Date = "2017-06-13T15:51:10Z";
     string queryString = "*[System/TimeCreated[@SystemTime >='" + Date + "']]";
    

    【讨论】:

    • 仍然给出同样的异常。
    • Querystring 的值是多少?
    • 看起来方括号也不平衡。
    • queryString = "*[System/TimeCreated[@SystemTime >='2017-06-13T15:51:10Z']]"
    • 您还对 > 符号进行了 XML 编码。这不是必需的,因为您不在 XML 中。
    猜你喜欢
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2017-09-14
    • 2017-05-11
    • 2021-12-21
    相关资源
    最近更新 更多