我正在尝试为我们的服务台代理创建一个基本脚本,这将允许他们查看特定的日志文件,而无需打开事件查看器以节省他们在电话上的时间。
但是,我遇到PowerShell的问题,其中某些事件ID没有显示实际的事件日志消息。
如果我运行以下内容:
Get-EventLog -ComputerName $env:COMPUTERNAME `
-LogName System `
-InstanceId 12 `
-Source Microsoft-Windows-Kernel-General |
Select-Object -Property Message
我希望收到实际事件日志中显示的消息:
相反,我得到的结论是:
The description for Event ID '12' in Source
'Microsoft-Windows-Kernel-General' cannot be found. The local
computer may not have the necessary registry information or message
DLL files to display the message, or you may not have permission to
access them. The following information is part of the event:'10',
'0', '15063', '726', '0', '0',
'2018-03-18T16:59:34.495252300Z'
我看到另一个thread关于使用Get-WinEvent
的问题,遗憾的是,在我工作的环境中这是不可能的。
答案 0 :(得分:2)
阅读并关注documentation:
GET-WinEvent
模块:
Microsoft.PowerShell.Diagnostics
从本地和上的事件日志和事件跟踪日志文件中获取事件 远程计算机。
...
备注强>
- 此cmdlet旨在替换运行Windows Vista和更高版本Windows的计算机上的
Get-EventLog
cmdlet。Get-EventLog
仅在经典事件日志中获取事件。 为了向后兼容,Get-EventLog
保留在Windows PowerShell中。
Get-WinEvent
cmdlet允许您使用XPath查询,结构化XML查询和简化的哈希表查询来过滤事件(后者用于以下示例):
PS D:\PShell> Get-WinEvent -ComputerName $env:COMPUTERNAME `
-FilterHashtable @{
ProviderName = 'Microsoft-Windows-Kernel-General';
Id = '12';
LogName = 'System' } `
-MaxEvents 3 |
Format-Table -Property RecordId, Message
RecordId Message
-------- -------
14103 The operating system started at system time 2018-04-25T06:13:0...
13957 The operating system started at system time 2018-04-24T05:34:3...
13826 The operating system started at system time 2018-04-22T07:49:0...
另请参阅(废弃)Get-EventLog
的相关输出:
PS D:\PShell> Get-EventLog -ComputerName $env:COMPUTERNAME `
-LogName System `
-InstanceId 12 `
-Source Microsoft-Windows-Kernel-General `
-Newest 3 |
Select-Object -Property Index, Message
Index Message
----- -------
14103 The description for Event ID '12' in Source 'Microsoft-Windows-Kernel-...
13957 The description for Event ID '12' in Source 'Microsoft-Windows-Kernel-...
13826 The description for Event ID '12' in Source 'Microsoft-Windows-Kernel-...
击> <击> 撞击>