Я пытаюсь проанализировать некоторые файлы журналов аудита контроллера домена с помощью PowerShell, извлекая только те биты данных, которые мне нужны. Например, один из файлов журналов перечисляет доверительные отношения домена, которые существуют в домене, и я пытаюсь проанализировать список доверительных отношений домена и экспортировать его в CSV. После того, как я написал первоначальный сценарий, я намереваюсь использовать его для нескольких других имеющихся у меня файлов журналов аудита, создав новые файлы PowerShell и используя в них различные регулярные выражения. Мой код работает, но он сохраняет только последнее найденное значение, а не все найденные значения.
В приведенном ниже коде я получаю имя сервера на основе имени выходного файла журнала (который я пропустил, чтобы код, который я показываю, был проще!).
$DCDiagArray = @()
$Results = New-Object PSObject
$Dcdiag = Get-Content "D:\Temp\Logs\SERVER01_repadminshowtrust.txt"
$Dcdiag | ForEach-Object{
Switch -RegEx ($_)
{
"TRUSTED.+\s" { $Trusted = ($_ -Replace ".*TRUSTED.+\s: ").Trim() }
}
If ($Trusted -ne $Null)
{
$Results | Add-Member -Name "ServerName" -Value $ServerName -Type NoteProperty -force
$Results | Add-Member -Name "DomTrust" -Value $Trusted -Type NoteProperty -force
$Trusted = $Null
}
}
$DCDiagArray += $Results
$DCDiagArray
Вот пример файла журнала:
Repadmin: running command /showtrust against full DC localhost
Domain Trust Info:
TRUSTED : DC=domain1,DC=net
TRUSTED : DC=domain2,DC=net
Что я должен ожидать в качестве вывода:
ServerName DomTrust
---------- --------
SERVER01 DC=domain1,DC=net
SERVER01 DC=domain2,DC=net
Вместо этого я получаю только:
ServerName DomTrust
---------- --------
SERVER01 DC=domain2,DC=net
Любая помощь будет принята с благодарностью.