Выбор определенных строк / данных из сообщения Get-Winevent в powershell

Я пытаюсь извлечь конкретную строку из вывода сообщения командлета get-winevent и не смог найти способ сделать это (возможно, я искал неправильно, но все еще изучаю более сложные методы сценариев). Что я бегу это:

Get-WinEvent -ComputerName $DC -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} -MaxEvents 1 | Select Message | Format-List

Который вернется с сообщением, похожим на это (Изменил некоторую информацию на общую информацию):

Message : The computer attempted to validate the credentials for an account.
Authentication Package:    MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon Account:    jdoe
Source Workstation:    Generic-Computername
Error Code:    0x0

Я пытаюсь найти простой способ найти компьютер, на котором кто-то последний раз входил, для более быстрого устранения неполадок, но я не могу отфильтровать только строку "Исходная рабочая станция", у меня может просто не быть правильного синтаксиса для хорошего поиска, чтобы найти нужные мне результаты. ищу, но я искал около недели и не нашел ничего похожего на то, что я ищу, любая помощь будет отличной!

1 ответ

Решение

Я не уверен, какую информацию вы хотите получить, но я уверен, что есть лучший способ, чем использовать Get-WinEvent для получения этой информации. Однако, если вы просто хотите получить значение Source Workstation Вы можете сделать это с помощью регулярного выражения:

$event = Get-WinEvent `
    -ComputerName $DC `
    -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} `
    -MaxEvents 1 `
    | Select -expand Message 

[regex]::Match($event, 'Source Workstation:\s*(.*)\s*').Groups[1].Value
Другие вопросы по тегам