【问题标题】:PowerShell - Output Message substring from Event-log after specific characterPowerShell - 在特定字符后从事件日志输出消息子字符串
【发布时间】:2015-04-29 07:20:55
【问题描述】:

我需要在 PowerShell 中显示事件日志消息的最后一行(“:”之后的几乎所有内容。我无法做到这一点,所以我的替代方法是输出消息和子字符串。我的消息中的“:”在位置 200-ish。下面的代码在“:”-ish 之后显示 56 个字符。

如何让它显示“:”之后的所有内容?

Get-Eventlog -Logname Application -Source "HELPME" | format-table timewritten, @{l="User";e={$_.message.substring(309, 56)}} -wrap -autosize

如果有帮助,这里是示例消息:

在源“帮助”中找不到事件 ID“1234567890”的描述。本地计算机可能没有必要的注册表信息或消息 DLL 文件来显示消息,或者您可能没有访问它们的权限。以下信息是活动的一部分**:** 'Blah', 'Blahh', 'Blahhh'

我只需要代码来显示时间和“Blah”、“Blahh”、“Blahhh”。

【问题讨论】:

  • 已回答,我想将我的最终代码粘贴到此处以供需要快速复制粘贴的任何人使用:Get-Eventlog -Logname Application -Source "HelpMe" | format-table timewritten, @{l="User";e={$_.message.substring(($_.message.lastindexof(':')+1))}} -wrap -autosize

标签: powershell substring get-eventlog


【解决方案1】:

这可能比您预期的要简单。字符串有一个名为 LastIndexOf() 的方法,您可以将其与 Substring() 方法一起使用。如果您省略长度,它应该只输出您指定的起始位置之后的所有内容,如果您使用 LastIndexOf,它将显示最后一个 : 在您的字符串中的位置。所以,这个:

$_.message.substring(($_.message.lastindexof(':')+1))

这将只输出 : 之后的部分消息,这就是为什么我在上面加上 +1,否则它包括冒号。

【讨论】:

  • 猜你可能想要 -1 或 -2 来获得时间的小时部分
  • 完美!正是我想要的!谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 2016-12-11
相关资源
最近更新 更多