我在ACS.txt
创建了一个巨大的Kiwi
报告,我想:
ID具有设置字符串"RADIUS Accounting"
然后....
...从这些行中获取两个值"User-ID=XXXXXXXX@domain.com"
和"MAC=xx-xx-xx-xx-xx-xx-xx-xx"
,然后在txt中输出。
这就是我现在所拥有的
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
}
我认为它给了我想要的东西,它只是在一个长列表中,而不是每行的用户/ mac。
答案 0 :(得分:0)
如何使用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