2014-09-15 3 views
0

팩스 서버를 통해 보낸 팩스를 추적하는 로그가 있습니다. Date_Time, Duration, CallerID, Direction (즉 인바운드/아웃 바운드), Dialed # 및 Answered #가 포함 된 .csv입니다. 이 파일은 10 분마다 팩스 서버에서 추적 된 새로운 정보로 덮어 씁니다. 이 내용은 추가 할 수 없습니다.Powershell - CSV 복사, 헤더 수정 및 새 CSV 지속적으로 업데이트

때때로 팩스가 작동하지 않으며 그 기간은 00:00:00입니다. 사용자가 누락 된 팩스에 대해 불만을 제기하고 있다는 사실을 사용자가 알 때까지는 실패했는지 여부는 알 수 없습니다. 나는 파일을 읽을 수있는 Powershell 스크립트를 만들려고하는데, 실패한 양이 있다면 이메일로 알려준다.

나는 그것에 대한 작업을 시작했으나, 더 많은 문제를 겪었을 때 금방 큰 혼란이되었습니다. 극복하기 위해 노력한 한 가지 문제는 특정 오류가있는 경우 계속해서 이메일을 보내고 있다는 것입니다. 원본 .csv 파일에는 아무 것도 저장할 수 없으므로 스크립트에서 이러한 아이디어를 미리 작성하려고했습니다.

  • 새 헤더가 "LoggedFailure"인 .csv를 복사하십시오. 파일이 없으면 만듭니다.
  • 두 파일을 비교하고 복사본에 다른 데이터 (예 : 원본의 업데이트)를 추가하십시오.
  • Durations가 00:00:00 인 경우 .csv가 복사되었는지 확인하십시오. 그럴 경우 LoggedFailure 헤더를 "예"또는 일부 값으로 표시하십시오.
  • 오류가 발생한 경우 이메일을 보내주십시오.
  • 이 스크립트를 예약 된 작업으로 실행하십시오 (매시간 정도).

데이터를 유지 관리하는 데 어려움이 있습니다. 필자는 스크립팅이나 프로그래밍 작업을 많이하지 않았으므로 정확한 로직을 작성하는 데 어려움을 겪고 있습니다. cmdlet을 조회하고 이해할 수는 있지만 내 주요 문제는 논리입니다. 누구나 어떤 조언을 해 주거나 최상의 정보를 업데이트하고, 중복 된 정보를 보내지 않고 실패를 추적하고, 실행되도록하는 방법에 대한 아이디어를 줄 수 있습니까?

답변

1

저는 Dialed #를 키로 사용하여 해시 테이블을 사용합니다. LastFail 날짜와 FailCount 속성을 값으로 가지는 PSCustomObject를 만듭니다. 시간 순서대로 로그를 읽고, 해시 테이블에 이미있는 것보다 새로운 지속 시간 00:00:00 인 항목을 찾을 때마다 해시 테이블에 새 항목을 추가/증가시킵니다. 전달 이벤트가 성공하면 해당 Dialed # 키가있는 항목을 해시 테이블에서 삭제하십시오.

해시 테이블 키는 실패한 전화 건 번호 모음이며, 값에있는 오브젝트는 얼마나 많은 실패가 있었는지와 마지막 실패 시점을 알려줍니다. 이를 사용하여 경고를 보내야하는지 여부와보고 할 번호를 결정하십시오.

특정 팩스 번호의 문제가 해결되면 해당 번호로 팩스를 보내면 해시 테이블의 항목이 지워지고 경고가 중지됩니다.

해시 테이블을 CLIXML로 내보내 실행하는 동안 저장하고 각 실행 시작시 다시 가져 오기하십시오.

+0

이 제안 해 주셔서 감사합니다. 비슷한 결과물을 사용하여 작동시킬 수있었습니다. – Joel