У меня есть серия файлов журнала (текстовый формат) с разных серверов со столбцами информации. У меня есть два скрипта PowerShell (ниже), которые ищут и вычисляют детали из определенных столбцов и выводят текстовый файл.
Скрипт № 1 (потерян объединенные пакеты RTP)
Этот скрипт будет смотреть на столбец «Подробности» в файле журнала и вычислять все «XX пакетов RTP были потеряны» (например, 57 пакетов RTP были потеряны)
Сценарий может быть выполнен в любом каталоге или папке, содержащей файлы (* .log), и даст вам общее количество потерянных пакетов RTP.
$sum = 0
foreach ($i in dir -filter *.log -Rec)
{
$sum += (gc $i.fullname | select -Skip 5 | ConvertFrom-Csv -Delimiter "`t" | ? {$_.Details - match "^(\d+)"} |% {$matches[1]} | Measure-Object -Sum).Sum
}
$sum | Tee-Object -FilePath .\CombinedResults.txt
[Console]::Write("Press any key to continue . . . ")
[Console]::ReadKey()
Скрипт № 2 (Всего пакетов RTP, потерянных сущностью)
Этот скрипт будет смотреть на столбец «Подробности» в файле журнала и вычислять все «XX RTP-пакетов, которые были потеряны» (например, 57 RTP-пакетов был потерян), чем покажет вам общее количество пакетов, потерянных на одну сущность (камеру), имя сущности находится в столбце «сущность».
Сценарий может быть выполнен в любом каталоге или папке, содержащей файлы (* .log), и предоставит вам общее количество пакетов RTP, потерянных на объект.
$out=foreach ($i in dir -filter *.log -Rec)
{
$cameras = gc $i.fullname | select -Skip 5 | ConvertFrom-Csv -Delimiter "`t" | group "Entity "
$cameras | select Name, @{n="Total";e={ ($_.group | ? {$_.Details -match "^(\d+)"} |% {$matches [1]} | Measure-Object -Sum).Sum}} | ? {$_.Total -gt 0}
}
$out | Tee-Object -FIlePath .\ByEntityResults.txt
[Console]::Write("Press any key to continue . . . ")
[Console]::ReadKey()
Вот что я пытаюсь достичь:
Эти файлы журналов поступают с разных серверов, и я хочу, чтобы результаты фильтровались сервером. В файлах журналов в левом верхнем углу указано «Имя компьютера:»
Для обоих сценариев я бы хотел, чтобы результаты фильтровались по имени компьютера.
Пример конечного результата:
Script # 1
Computer Name: T3-Archiver22
Total RTP Packet(s) lost = 43243
Computer Name: T3-Archiver24
Total RTP Packet(s) lost = 8837
Script # 2
Computer Name: T3-Archiver22
Entity Name: Total RTP Packet(s) lost
(7233)C2-GF-127 - 10.20.13.69(P) 54
.
.
.
Computer Name: T3-Archiver24
Entity Name: Total RTP Packet(s) lost
(6547)U2 Z-C14 27
.
.
.