2011-06-14 3 views
1

저는 완벽하게하려고하는 두 개의 스크립트가 있습니다. 나를 도울 수있는 파워 쉘 전문가가 필요해!Powershell, Textfile에서 정보를 추출하십시오.

정보 열이있는 다양한 서버의 일련의 로그 파일 (텍스트 형식)이 있습니다. Powershell 스크립트 (아래)는 특정 coulmns의 세부 정보를 찾고 계산하여 텍스트 파일을 출력합니다.

예 로그 파일 :

http://www.megaupload.com/?d=63XS8VKA

스크립트 # 1

이 스크립트는 로그 파일에 "세부 사항"열을보고 모든 계산합니다 (결합 된 RTP 패킷 (들) 손실) "XX RTP 패킷이 손실되었습니다"(예 : 57 개의 RTP 패킷이 손실되었습니다)

스크립트는 (* .log) 파일을 포함하는 모든 디렉토리 또는 폴더에서 실행될 수 있으며 당신은 잃어버린 RTP 패킷의 총량을 알 수 있습니다. (법인에 의해 손실 된 총 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

이 스크립트는 로그 파일의 "세부 사항"칼럼을보고 계산합니다 모든 "XX RTP 패킷 (들) (예 : 57 RTP 패킷이 손실되었습니다) 엔티티 (카메라) 당 손실 된 전체 패킷이 "엔티티"열에 표시됩니다.

스크립트는 (* .log) 파일이있는 디렉토리 또는 폴더에서 실행될 수 있으며 엔티티 당 손실 된 RTP 패킷의 총량을 제공합니다.

이러한 로그 파일은 다양한 서버에서 온, 나는 결과가 서버에서 filterd 싶은 : 여기

$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() 

나는 acheive하기 위해 노력하고있어 무슨. 왼쪽 위 모서리에있는 로그 파일에 "컴퓨터 이름 :"이라고 표시됩니다.

두 스크립트 모두에 대해 컴퓨터 이름으로 필터 결과를 표시하고자합니다.

최종 결과 예 :

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 

. 

. 

. 

어떤 도움이 좋을 것입니다!

+0

가 데이터를 수집하기 위해 서버 당 하나 개 이상의 로그 파일이있을 수 있는지 알 필요가 –

답변

0

$ sum과 같은 단일 값을 누적하는 대신 해시 테이블 (연관 배열, 사전)을 사용하여 서버 이름과 연관된 합계를 누적 한 다음 테이블에서 수집 된 데이터를 파일에 쓸 수 있습니다.

이 링크에서 해시 테이블 사용의 몇 가지 예있다 :

Does powershell have associative arrays?

관련 문제