Как извлечь несколько строк из файлов журнала - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь извлечь несколько строк из файлов журнала. Все идет нормально. Но я не знаю, как извлечь из этого результата только необходимые детали.

Пример

Запись в журнале выглядит так:

(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-Test\logins.txt'
$regex = 'QueryCreativeFilterInfoList'
$files = Get-ChildItem "C:\Copy-Test\Logs"

foreach ($file in $files)
 {
    gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator" | Out-File -FilePath $output_file -Append
}

Теперь я хотел бы только вывести данные, время, имя пользователя, но я не знаю как. Я видел некоторые сумасшедшие регулярные выражения, но это было намного выше моего уровня навыка.

Буду признателен, если кто-нибудь поможет мне в этом

1 Ответ

2 голосов
/ 18 апреля 2019

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

gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator"| foreach {
   $a=$_ -split "\)\("
   "$(($a[1] -split " ")[1,0] -join ' ') $($a[4].substring(5))"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...