【问题标题】:powershell Win-GetEvent -MaxEventspowershell Win-GetEvent -MaxEvents
【发布时间】:2020-02-02 16:40:06
【问题描述】:

尝试将 PS 查询组装到 EventLog 中,并使用 MaxEvents 限制。如果“MaxEvents”为 1,它打印零行,当 MaxEvents 为 2 时,它打印标题行和一个事件。这是正确的行为,还是我错过了什么?

powershell.exe Get-WinEvent -FilterHashTable "@{ LogName = 'Microsoft-Windows-UniversalTelemetryClient/Operational'; Id = 55} -MaxEvents 2 | where {$_.Message -match 'false'} | ft -HideTableHeader"

ProviderName: Microsoft-Windows-UniversalTelemetryClient

02/02/2020 14:25:04             55 Information      Is the Internet ava...

【问题讨论】:

  • 看起来您的过滤器在 G-WE 调用后正在删除与 false 不匹配的项目。你看过 G-WE 调用本身的结果吗……没有过滤器?

标签: powershell get-winevent


【解决方案1】:

查看下面的结果:

Get-WinEvent -FilterHashTable @{ LogName = 'Microsoft-Windows-UniversalTelemetryClient/Operational'; Id = 55} 

我的电脑是:

TimeCreated Id LevelDisplayName 消息
----------- -- ---------------- --------
21/01/2020 06:29:23 55 信息 互联网是否可用:真的
21/01/2020 05:32:29 55 信息 互联网是否可用:真的
20/01/2020 17:23:22 55 信息 互联网是否可用:是的
2020 年 19 月 1 日 07:12:06 55 信息 互联网是否可用:真的
2020 年 19 月 1 日 07:07:22 55 信息互联网是​​否可用:假

如果我为不超过 4 的任何值添加 -MaxEvents 则没有结果

如果我添加 -MaxEvents 5:

提供者名称:Microsoft-Windows-UniversalTelemetryClient

2020 年 19 月 1 日 07:07:22 55 信息互联网是​​否可用:假

因此,-MaxEvents 是根据 -FilterHashTable 的结果处理的,而不是根据日志的结果处理的。

【讨论】:

  • 在哈希表部分对我有帮助之前添加-MaxEvents。这里的工作版本:powershell.exe Get-WinEvent -MaxEvents 2 -FilterHashTable "@{ LogName = 'Microsoft-Windows-UniversalTelemetryClient/Operational'; Id = 55} | where {$_.Message -match 'false'} | ft -HideTableHeader"
  • 想知道为什么你的输出没有被截断而我的却是?我只得到了字符串Is the Internet ava... 的一部分,但您的输出Is the Internet available: true 中有一个完整的字符串。我无法解析单词“true”或“false”的输出
  • 可能是因为你运行它的方式,它返回一个字符串而不是一个对象 - 你为什么使用'powershell.exe'?尝试在输出之前将 Select TimeCreated,Message 插入到您的命令中。
  • 此命令是批处理脚本的一部分,因为无法通过 WMI 访问 eventlog 'Microsoft-Windows-UniversalTelemetryClient'(在我的情况下使用 getwmiproperty.exe 工具),因此我必须通过 PS 阅读它并在 FOR 循环中解析输出。由于我对 PS 一无所知,只是盲目地尝试组装合适的命令:-/ 我不知道如何将“Select TimeCreated,Message”合并到我的命令中。只是尝试了几个变种,但没有运气......
  • 知道了,非常感谢! powershell.exe "Get-WinEvent -MaxEvents 1 -FilterHashTable @{ LogName = 'Microsoft-Windows-UniversalTelemetryClient/Operational'; ID = 55} | Select-Object -Property TimeCreated,Message" 但无论如何,有没有任何选项可以在 PS 输出中禁用字符串截断?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 2016-05-08
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多