PowerShell을 사용하여 시스템 이벤트를 효과적으로 로깅하는 방법



PowerShell은 PC가 마지막으로 재시작된 시점을 확인하거나 시스템 종료 내역을 자세히 살펴봐야 할 때 매우 유용합니다.이벤트 로그를 일일이 확인하지 않고는 이러한 정보를 찾기가 쉽지 않은데, 스크립트와 명령어를 활용하면 빠르고 반복 가능한 방법으로 정보를 얻을 수 있습니다.다만, PowerShell은 처음 접할 때 다소 복잡하게 느껴질 수 있습니다.특히 명령어나 이벤트 ID에 익숙하지 않은 경우 더욱 그렇습니다.때로는 명령어가 예상대로 작동하지 않거나, Windows 버전이나 시스템 설정에 따라 약간의 수정이 필요할 수도 있습니다.하지만 일단 익숙해지면 문제 해결 및 기록 관리에 놀라울 정도로 강력한 도구가 됩니다.

PowerShell을 사용하여 Windows의 마지막 재시작 및 종료 이벤트를 추적하는 방법

PowerShell을 사용하여 컴퓨터가 마지막으로 재시작된 시간을 확인합니다.

이 방법은 Windows가 시스템 시작 또는 종료 시 특정 이벤트 ID를 기록하기 때문에 효과적입니다.대부분의 시스템에서 이벤트 ID 6005는 “이벤트 로그 서비스 시작”(PC 부팅)을 나타내고, ID 6006은 “이벤트 로그 서비스 중지”(종료)를 나타냅니다.이벤트 ID 6008은 예기치 않은 종료를 나타내는데, 이는 시스템 충돌이나 정상적인 종료가 아닌 경우 문제를 해결하는 데 유용합니다.일부 시스템에서는 이러한 이벤트가 즉시 나타나지 않거나 로그가 덮어쓰여지는 경우가 있습니다.하지만 대부분의 일상적인 상황에서는 이 방법을 통해 문제를 빠르게 파악할 수 있습니다.

  1. Windows PowerShell을 엽니다.일반적으로 시작 > Windows PowerShell 에서 찾을 수 있으며, Ctrl+C를 누르고 Win + X메뉴에서 선택하여 실행할 수도 있습니다.더 자세한 정보를 원하시면 PowerShell이 ​​포함된 Windows 터미널을 사용하는 것이 좋습니다.
  2. 다음 명령어를 실행하여 가장 최근의 시작 이벤트를 가져오세요.
  3. Get-WinEvent -LogName System | Where-Object {$_. Id -eq 6005 -or $_. Id -eq 6006 -or $_. Id -eq 6008} | Select-Object -Last 1 | Format-List

    이 기능은 시작/종료 시 기록된 마지막 이벤트를 가져옵니다.왜 필요할까요 ? 이러한 이벤트는 Windows가 마지막으로 부팅되거나 종료된 정확한 시간을 알려주기 때문입니다.여기에는 충돌과 같은 예기치 않은 상황도 포함됩니다.언제 가져올까요 ? 로그에 최근 항목이 있을 때 가져오는데, 일반적으로 로그가 삭제되었거나 오랜 시간이 지난 경우가 아니면 최신 항목입니다.어떤 내용이 표시될까요 ? 타임스탬프를 포함하여 마지막 충돌 또는 재시작에 대한 자세한 분석 정보를 확인할 수 있습니다.시스템 및 로그 길이에 따라 여러 줄이 표시될 수도 있고 한 줄만 표시될 수도 있습니다.

    PowerShell을 사용하여 최근 종료 내역 확인하기

    예기치 않은 종료를 포함하여 PC가 마지막으로 꺼진 시간을 확인하려면 이벤트 ID 13을 필터링하면 됩니다.이 이벤트는 “운영 체제가 시스템 시간 xyz에 종료되었습니다.”라는 메시지를 표시합니다.일부 시스템에서는 이 방법이 훨씬 더 정확합니다.다음 명령을 실행하세요.

    Get-EventLog -Newest 10 -LogName "System" | Where-Object {$_. EventID -eq 13}

    이 명령은 최근 종료 기록 10개를 보여줍니다.일반적으로 예상치 못한 종료가 있었는지 확인하기에 충분합니다.출력은 깔끔하므로 직접 해석할 수 있습니다. Windows 10/11과 같은 최신 Windows 버전에서는 이 Get-EventLogcmdlet이 더 이상 사용되지 않고 다른 cmdlet으로 대체되었을 수 있지만 Get-WinEvent, 대부분의 시스템에서는 여전히 작동합니다.

    시스템의 마지막 시작 시간을 확인하는 방법

    시작 로그는 기본적으로 동일하며, 이벤트 ID 12(“운영 체제가 시스템 시간 xyz에 시작되었습니다”)만 찾으면 됩니다.다음 명령을 실행하세요.

    Get-EventLog -Newest 10 -LogName "System" | Where-Object {$_. EventID -eq 12}

    이렇게 하면 시스템이 마지막으로 부팅된 시점을 명확하게 확인할 수 있습니다.특히 시작 문제를 해결하거나 시스템 가동 시간을 확인하려는 경우에 유용합니다.

    대본만으로는 부족할 경우를 위한 추가 팁

    때때로 PowerShell 명령이 로그 파일이 덮어쓰이거나 손상되어 제대로 작동하지 않는 경우가 있습니다.이런 경우에는 시작 메뉴에서 “이벤트 뷰어”를 검색한 다음 Windows 로그 > 시스템 으로 이동하여 이벤트 뷰어를 수동으로 확인하는 것이 명령을 실행하는 것보다 빠를 수 있습니다.또한, 이 정보가 정말 중요한 경우에는 스크립트를 사용하거나 정기적인 보고서를 예약하여 자동화하는 것이 좋습니다.

    • `Get-WinEvent`와 같은 명령어는 특히 필터링된 검색에 있어 비교적 최근에 개발되었고 유연성이 뛰어나다는 점을 기억하세요.
    • 로그는 수동으로 또는 정리 도구를 사용하여 삭제할 수 있으므로 정보가 항상 100% 정확한 것은 아니니 참고하시기 바랍니다.
    • 일부 환경에서는 특정 로그 또는 이벤트에 액세스하기 위해 PowerShell을 관리자 권한으로 실행해야 할 수 있습니다.


이 글이 도움이 되었나요?