PowerShell - выводить подстроку сообщения из журнала событий после определенного символа

Мне нужно отобразить последнюю строку из сообщения журнала событий в PowerShell (почти все после ":". Я не смог этого сделать, поэтому у меня есть альтернатива - вывести сообщение и подстроку. ": "в моих сообщениях находится в позиции 200 символов. Код ниже отображает 56 символов после символа": ".

Как мне заставить это отображать все после ":"?

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

Вот пример сообщения, если оно помогает:

Описание для идентификатора события "1234567890" в источнике "HELPME" не может быть найдено. На локальном компьютере может отсутствовать необходимая информация реестра или файлы DLL сообщений для отображения сообщения, или у вас может не быть разрешения на доступ к ним. Следующая информация является частью мероприятия **:** "Бла", "Бла", "Бла"

Мне просто нужен код, чтобы показать время и "бла", "бла", "бла".

1 ответ

Решение

Это, вероятно, проще, чем вы ожидали. Строки имеют метод LastIndexOf(), который можно использовать с методом Substring(). Если вы опускаете длину, она должна просто выводить все после указанной вами стартовой позиции, а если вы используете LastIndexOf, она покажет, где находится last: в вашей строке. Итак, это:

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

Это выведет только часть сообщения после:, поэтому у меня есть +1, в противном случае это двоеточие.

Другие вопросы по тегам