#powershell
#powershell
Вопрос:
Я пытаюсь извлечь несколько строк из файлов журнала. Пока все хорошо. Но я не знаю, как извлечь из этого результата только необходимые детали.
Пример
Запись в журнале выглядит следующим образом:
(DIAG:XMLRPC)(11:07:01 15/04/2019)(MEM:130590)(TID:3632)(USER:Administrator)(REMOTE:10.67.125.177:59032)(XmlRpc: called method 'QueryCreativeFilterInfoList'.31)
Я могу разобрать его с помощью следующего кода:
$output_file = 'C:Copy-Testlogins.txt'
$regex = 'QueryCreativeFilterInfoList'
$files = Get-ChildItem "C:Copy-TestLogs"
foreach ($file in $files)
{
gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator" | Out-File -FilePath $output_file -Append
}
Теперь я хотел бы вывести только данные, имя пользователя time, но я не знаю, как это сделать. Я видел некоторые сумасшедшие регулярные выражения, но это было намного выше моего уровня квалификации.
Я был бы признателен, если бы кто-нибудь мог помочь мне в этом
Комментарии:
1. Все ли круглые скобки буквальны в вашей строке примера?
2. @LotPings да, они являются частью этого
Ответ №1:
Самый простой способ — разделить строку записи журнала с помощью )(
разделителя, а затем распечатать элементы результирующего массива. Что-то вроде этого:
gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator"| foreach {
$a=$_ -split ")("
"$(($a[1] -split " ")[1,0] -join ' ') $($a[4].substring(5))"
}
Комментарии:
1. большое вам спасибо, это помогает. Теперь вывод выглядит следующим образом: 11:07:01 15/04/2019 ПОЛЬЗОВАТЕЛЬ: Администратор Можно ли в дальнейшем форматировать его так: Дата Время Имя пользователя —- —— ——— 15/04/2019 11:07:01 Администратор ?