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, в противном случае это двоеточие.