PowerShell : Robocopy 실행후 로그파일에서 에러 내용을 취득 하는 방법!!
PowerShell을 사용해 복수의 서버에 robocopy 커맨드로 파일 복사후 해당 결과를 로그 파일로 저장 하고 있었습니다. 그러던중 error 가 발생(파일 복사 실패 등등) 해도 실행 콘솔창에선 별다른 표시 없이 작업 완료가 뜨고, 해당 결과만 로그 파일에 저장하는걸 알게 되어, 로그 파일에서 error가 발생 했을 경우 해당 결과를 콘솔창에 표시 해주는 작업이 필요 하게 되었습니다.
robocopy를 사용하다 파일 복사가 실패 하면, 성공 했을때와는 다르게 맨처음 날짜 값을 기록 하기 때문에 취득 하는 패턴으로 날짜 형식을 사용 했습니다.
Get-Content 를 사용
※참고 사이트 가기※
robocopy를 사용하다 파일 복사가 실패 하면, 성공 했을때와는 다르게 맨처음 날짜 값을 기록 하기 때문에 취득 하는 패턴으로 날짜 형식을 사용 했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
//선두의 "yyyy/mm/dd"를 취득 하면, 예: "9876/54/32"의 경우에도 에러판별이 안됩니다.
robocopy $SOURCE1 $GS_TARGET1 /E /NP /Log:$Log_File_1
Get-Content $Log_File_1 | Select-String -pattern "^\d{4}/\d{2}/\d{2}" -Context 0,1 -Encoding default
//년월일 이외에 /(슬러쉬) 태그를 사용하는 경우는 거의 없다보니 위와 같은 경우의 값이 들어가지는 않겠지만
//확실히 하기 위해 아래와 같은 패턴을 사용 합니다.
//아래의 패턴은 스크립트를 "2099"년까 사용한다고 가정 했을
robocopy $SOURCE1 $GS_TARGET1 /E /NP /Log:$Log_File_2
Get-Content $Log_File_2 | Select-String -pattern "^20\d{2}/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])" -Context 0,1 -Encoding default
| cs |
Get-Content 를 사용
※참고 사이트 가기※
댓글
댓글 쓰기