Get-EventLog和Get-WinEvent的区别 1


为什么会有Get-EventLog和Get-WinEvent两条命令?Get-EventLog能查询到的,能用Get-WinEvent查到吗?反之呢?是不是事件日志中记录的所以事件都能通过Get-EventLog获取?

从MSDN的解释来看

  1. Get-EventLog
    获取本地或远程计算机上的事件日志事件日志列表中的事件。
  2. Get-WinEvent
    从本地和远程计算机上的事件日志事件跟踪日志文件中获取事件。

从这一点来看Get-WinEvent比Get-EventLog的功能更广泛,多了一个“事件跟踪日志”。

从命令返回的对象来看

  1. Get-WinEvent返回的是System.Diagnostics.Eventing.Reader.EventLogRecord
  2. Get-EventLog返回的是System.Diagnostics.EventLogEntry

比如我想查看近期系统的开机和关机时间。

用Get-EventLog 出错

PS> Get-EventLog System -InstanceId 6005
Get-EventLog : 未找到匹配项
所在位置 行:1 字符: 1
+ Get-EventLog System -InstanceId 6005
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Get-EventLog], ArgumentException
    + FullyQualifiedErrorId : GetEventLogNoEntriesFound,Microsoft.PowerShell.Commands.GetEventLogCommand

 

用Get-WinEvent则可以

PS> Get-WinEvent -FilterHashtable @{Logname='system';Id='6005'}


   ProviderName:EventLog

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
2014/8/19 19:13:45            6005 信息             事件日志服务已启动。
2014/8/17 9:52:32             6005 信息             事件日志服务已启动。
本文链接: https://www.pstips.net/diff-in-get-eventlog-and-get-winevent.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

一条评论 “Get-EventLog和Get-WinEvent的区别

  • starsailor

    Get-EventLog 的关键字过滤只支持InstanceID属性,不支持EventID,两者并不完全等同。
    要使用Get-EventLog查询6005事件,对应InstanceID为 2147489653,所以应该写为:
    Get-EventLog -LogName System -InstanceID 2147489653
    Get-WinEvent则是支持EventID属性过滤的。