작업 내용을 기록하는 것은 아주 중요한 일입니다.
하지만, 작업만 하기에도 바쁜데 별도로 기록까지 하려면 어려움이 있는게 사실이죠.
그래서 PowerShell 은 기본적으로 History 기능을 제공하며, 대단히 큰 도움이 됩니다.
하지만, History 기능은 입력한 내용만 기록 할 뿐, 출력 내용까지 기록 하지는 않습니다.
입력 및 출력까지 PowerShell 로 작업 한 모든 기록을 남기고자 한다면, Start-Transcript cmdlet 을 사용하면 됩니다.
Start-Transcript cmdlet 을 아무런 추가 파라미터 없이 실행하게 되면, 기본적으로 내문서 디렉터리에
"PowerShell_transcript.날자시간정보.txt" 형식의 이름으로 작업 내용이 기록되는 파일이 생성 됩니다.
Start-Transcript cmdlet 의 자세한 파라미터 정보를 보시려면, 아래의 더보기 를 클릭하세요.
-Path 파라미터를 통해 직접 작업 내용 기록 파일을 지정 할 수도 있으며, -Append 파리미터를 지정해서 작업 내용 기록이 해당 파일을 덮어쓰는 것이 아니라 문서의 끝부분에 추가되도록 할 수도 있습니다. -Force 파라미터를 지정하면 읽기전용 속성의 파일에도 작업 내용을 기록 할 수 있습니다.
이 파라미터를 지정할 경우, 대상 파일의 권한을 읽기/쓰기 로 변경하게 됩니다.
단, 보안제한 으로 인해 접근 할 수 없는 경우에는 이 파라미터를 지정 해도 접근 할 수 없습니다.
작업 내용 기록을 종료하고 싶을 때에는 Stop-Transcript cmdlet 을 사용하거나, 그냥 PowerShell 창을 닫으면 됩니다.
전 Start-Transcript cmdlet 을 Profile 에 넣어서 항상 작업 기록이 남도록 해 두었습니다. 든든하네요. ^^
작업 기록이란게 남길때는 귀찮지만, 나중에 필요할때는 정말 절실한 데이터 입니다.
여러분들 모두 작업 기록을 꼭 남기셔서 차후에 유용하게 사용하실 수 있기를 바랍니다.
최대 로그 크기에 도달 했을 때 취할 액션은 다음의 3가지 중 하나를 지정 가능 합니다.
- DoNotOverwrite: 기존 항목이 유지되고 새 항목이 삭제됩니다.
- OverwriteAsNeeded: 각각의 새 항목이 가장 오래된 항목을 덮어씁니다.
- OverwriteOlder: 새 이벤트가 MinimumRetentionDays 속성에 지정된 값보다 오래된 이벤트를 덮어씁니다. MinimumRetentionDays 속성에 지정된 값보다 오래된 이벤트가 없는 경우 새 이벤트가 삭제됩니다.
3. 이벤트가 이벤트 로그 내에서 유지되어야 하는 최소 일수를 변경하려면 다음과 같이 실행하면 됩니다.
반드시 최대 로그 크기에 도달 했을 때 취할 액션이 OverwriteOlder 로 지정 되어야 합니다.
헌데, 문제를 발견했습니다.
저는 이벤트 로그가 가득 찼을 때 이벤트 로그를 별도 저장 해 두고 새롭게 쌓게(아카이빙) 하고 싶었습니다만,
현재 PowerShell에서는 이렇게 설정 할 수 있는 방법을 찾을 수 없었습니다.
대신 wevtutil 이라는 커맨드라인 유틸리티를 통해 설정이 가능했습니다. 다음과 같이 실행하면 됩니다.
wevtutil sl "로그이름" /rt:true /ab:true
* 위 명령에 대한 자세한 설명을 보시려면, 아래 더보기를 클릭하세요.
sl
set-log 의 약자로서, 이벤트로그의 설정을 변경하겠다는 뜻입니다.
/rt
retention 의 약자로서, 로그 보유 설정을 결정하는 옵션입니다. true 혹은 false 로 값을 지정 할 수 있는데, true 일 경우 로그가 가득 찼을 때 새로운 로그가 버려지며, false 로 설정 되었을 경우 새로운 로그가 발생할 경우 가장 오래된 로그를 지우고 저장 되게 됩니다.
/ab
autobackup 의 약자로서, 자동 백업(아카이빙) 여부를 결정하는 옵션입니다. 역시 true 혹은 false 중에 값을 지정 할 수 있으며, true 로 설정시에는 로그가 가득찼을 경우 자동으로 백업을 하게 됩니다. false 일 경우는 자동으로 백업을 하지 않습니다. 만약 이 설정을 true 로 설정 할 경우, 반드시 /rt 옵션도 true 로 설정 되어야 합니다.
wevtutil 은 Windows 2008 부터 제공되는 커맨드 라인 유틸리티로서, 새롭게 변경 된 이벤트 로그 시스템을 커맨드 라인 상에서 관리 할 수 있도록 도와 줍니다.
wevtutil 을 자세히 살펴 본 결과, PowerShell 에서는 설정 할 수 있는 모든 부분을 설정 할 수 있을 뿐만 아니라,
PowerShell 에서는 설정 할 수 없는 부분도 wevtutil 은 수정이 가능 했습니다.
현재는 PowerShell 에서 제공하는 이벤트 로그 관련 cmdlet 보다 wevtutil 가 훨씬 강력한 기능을 가지고 있다고 판단 됩니다.
PowerShell 에서도 커맨드라인 유틸리티를 자유롭게 사용 할 수 있으므로, 이벤트 로그 설정과 관련한 작업시 wevtutil 을 적극적으로 사용하는 것이 바람직 하다고 봅니다. 물론 Object 기반의 처리를 못한다는 아쉬움은 남습니다.
앞으로 PowerShell 은 더욱더 강력해져서 윈도우 시스템의 모든 부분을 다룰 수 있게 되리라 기대하고 있습니다만,
역시 아직은 아쉬운 부분이 많이 있는것 같습니다.
안녕하세요 @우주인입니다.
파워쉘을 사용할때 출력결과가 너무 많아 보거나, 따로 복사하기 까다로울때가 있습니다.
이때 유용한 cmdlet이 바로 clip 입니다. 간단히 명령어 뒤에 | 연결하여 사용하시면 Windows Clipboard로 자동복사되니 워드패드나 메모장에 출력하여 사용이 가능합니다.