0

我需要在 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'。

4

1 回答 1

1

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

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

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

于 2015-02-26T19:22:16.967 回答