我正在尝试从日志文件中提取几个字符串。到目前为止,一切都很好。但是我不知道如何从结果中仅提取所需的细节。
示例
日志条目如下所示:
(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
}
现在我只想输出数据,时间用户名,但是我不知道如何。我看到了一些疯狂的正则表达式的东西,但这远远超出了我的技能水平。
如果有人可以指导我,我将不胜感激
答案 0 :(得分:2)
最简单的方法是用)(
分隔符分割日志条目字符串,然后打印结果数组的成员。像这样:
gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator"| foreach {
$a=$_ -split "\)\("
"$(($a[1] -split " ")[1,0] -join ' ') $($a[4].substring(5))"
}