@Enlighted_one

Чем осуществить парсинг текста в powershell?

Хотел написать короткий скрипт по подсчёту времени проведённому пользователем за компьютером.

$ti = Get-Date -Format "dd mm yyyy"
Get-Eventlog -logname Security -After $ti -InstanceId 4624 | Format-List


Получаю список всех логинов, однако не в строчном а в текстовом формате.
Теперь мне нужно найти логин и время в этом тексте.
Каким образом можно отпарсить текст целиком? Или только построчно?
В какую сторону копать?

И дополнительный вопрос, почему powershell так не понимает и обязательно надо вводить промежуточную переменную:
Get-Eventlog -logname Security -After Get-Date -Format "dd mm yyyy" -InstanceId 4624 | Format-List
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
@MaxKozlov
пока отвечу а второй вопрос
Get-Eventlog -logname Security -After Get-Date -Format "dd mm yyyy" -InstanceId 4624 | Format-List

Парсер вас просто не понимает. Возьмите в скобки.

Get-Eventlog -logname Security -After (Get-Date -Format "dd mm yyyy" ) -InstanceId 4624 | Format-List

И формат лишний-там тип datetime, а не строка
Get-Eventlog -logname Security -After (Get-Date).Date -InstanceId 4624 | Format-List


Если вы хотите дальше как-то выбирать или сортировать - уберите format-list. Это уже вывод на консоль, с которым дальше делать что-то сложно

Теперь первый вопрос.

Имя логина содержится в ReplacementStrings[5]
Поиск и фильтрация осуществляется примерно так

Get-Eventlog -logname Security -After (Get-Date).Date -InstanceId 4624 | Where-Object { $_.ReplacementStrings[5] -match 'pupkin' -and $_.TimeGenerated -lt '2022-05-05 11:00'}


можно группировать по логину
Get-Eventlog -logname Security -After (Get-Date).Date -InstanceId 4624 | Group-Object { $_.ReplacementStrings[5] }


Пример выборки полей
Get-Eventlog -logname Security -After (Get-Date).Date -InstanceId 4624 | Select-Object @{n='Username'; e={$_.ReplacementStrings[5]}}, TimeGenerated
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Enlighted_one Автор вопроса
Благодарю за подробное разъяснение. Пришлось обновить Powershell и удалось добиться кое каких результатов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Аликсон Москва
от 150 000 ₽
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
Easy Development Санкт-Петербург
от 4 000 до 6 000 $
04 июл. 2022, в 14:23
3000 руб./за проект
04 июл. 2022, в 14:03
6000 руб./за проект
04 июл. 2022, в 13:56
5000 руб./за проект