PowerShell - 在特定字符后从事件日志输出消息子字符串

时间:2015-02-26 18:55:08

标签: powershell substring get-eventlog

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

如何在":"?

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

如果有帮助,请点击示例消息:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

这将只输出消息的一部分:这就是为什么我有+1,否则它包括冒号。