Получение нескольких строк из одной строки журнала - PullRequest
0 голосов
/ 05 июня 2018

У меня огромный ACS.txt отчет, созданный в Kiwi, и я хотел бы:

идентифицировать определенные строки, которые имеют заданную строку "RADIUS Accounting" затем ....

... из этих строк взять два значения "User-ID=XXXXXXXX@domain.com" и "MAC=xx-xx-xx-xx-xx-xx-xx-xx", затем вывести их в текстовом формате.

Это то, что у меня сейчас

Get-Content C:ACS.txt | ForEach-Object { 
    $null = $_ -match "RADIUS Accounting",\s.*User-Name=(?<user>[0-9]+@domain.com).*Calling-Station-ID=(?<mac>([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})).*"; $matches.user; $matches.mac
}

Я думаю,это дает мне то, что я хочу, это просто один длинный список, а не user / mac на строку.

1 Ответ

0 голосов
/ 05 июня 2018

Как насчет использования Select-String и итерации найденных (под) соответствий
создания нового объекта PSCustomObject, который вы можете экспортировать или просмотреть

$UserMac = Select-String -Path C:ACS.txt -Pattern "RADIUS Accounting.*User-Name=([0-9]+@domain.com).*Calling-Station-ID=(([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}))" |
    ForEach-Object{
        [PSCustomObject]@{
            User = $matches.Groups[1].Value
            Mac  = $matches.Groups[2].Value
    }
}
# $UserMac
$UserMac | Out-Gridview
# $UserMac | Export-Csv .\UserMac.csv -NoType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...