it-swarm-korea.com

Windows Server 다시 시작 / 종료 기록

Windows Server를 다시 시작하거나 종료 할 때마다 사용자 시작, 시스템 시작 및 시스템 충돌을 포함한 이유를 쉽게 확인할 수있는 방법은 무엇입니까?

Windows 이벤트 로그는 확실한 대답이지만 볼 수있는 전체 이벤트 목록은 무엇입니까?

내 질문에 부분적으로 답하는 게시물을 찾았습니다.

그러나 모든 시나리오 AFAIK를 다루지는 않으며 정보가 여러 답변에 분산되어 있기 때문에 정보를 이해하기 어렵습니다.

여러 버전의 Windows Server가 있으므로 2008, 2008 R2, 2012 및 2012 R2 버전 이상에서 작동하는 솔루션이 이상적입니다.

92
JohnC

내가 찾을 수있는 가장 간결한 대답은 다음과 같습니다.

다음은 모니터링 할 이벤트 ID를 나열합니다 (문서에서 인용되었지만 편집 및 재 형식화 됨).

  • 이벤트 ID 6005 ( 대체 ) :“이벤트 로그 서비스가 시작되었습니다.” 이것은 시스템 시작과 동의어입니다.
  • 이벤트 ID 6006 ( 대체 ) :“이벤트 로그 서비스가 중지되었습니다.” 이것은 시스템 종료와 동의어입니다.
  • 이벤트 ID 6008 ( alternate ) : "이전 시스템 종료가 예상치 못했습니다." 시스템이 올바르게 종료되지 않은 후 시스템이 시작되었음을 기록합니다.
  • 이벤트 ID 6009 ( 대체 ) : 부팅시 감지 된 Windows 제품 이름, 버전, 빌드 번호, 서비스 팩 번호 및 운영 체제 유형을 나타냅니다.
  • 이벤트 ID 6013 : 컴퓨터의 가동 시간을 표시합니다. 이 ID에 대한 TechNet 페이지가 없습니다.

내 OP에 나열된 서버 오류 답변에서 몇 가지를 추가하십시오.

  • 이벤트 ID 1074 ( alternate ) : "X 프로세스는 다음과 같은 이유로 사용자 Y를 대신하여 컴퓨터의 재시작/종료를 시작했습니다." 응용 프로그램 또는 사용자가 다시 시작 또는 종료를 시작했음을 나타냅니다.
  • 이벤트 ID 1076 ( 대체 ) : "사용자 X가이 컴퓨터를 마지막으로 예기치 않게 종료 한 이유는 Y입니다." 종료 권한이있는 첫 번째 사용자가 예기치 않게 다시 시작하거나 종료 한 후 컴퓨터에 로그온하고 발생 이유를 제공 할 때 기록합니다.

내가 그리워 했어?

106
JohnC

JohnC가 기본적으로 모든 것을 다루었 기 때문에 이것을 단순히 주석으로 남겨 두려고하지만 아직 그렇게 할 수는 없습니다.

그가 묘사 한 이벤트는 꽤 오랫동안 사용되어 왔기 때문에 언급 한 모든 OS 및 데스크탑 형제에게도 효과가 있습니다. TechNet의 6006 에 대한 것과 같은 이벤트 ID 페이지에 Windows Server 2003이 언급되어 있습니다.

정상적으로 종료 된 경우 사용자가 시작했거나 그렇지 않은 경우 다양한 서비스가 "중지 된 상태가되었습니다"라는 일부 이벤트 ID 7036 도 표시됩니다. 머신이 다시 시작되면 서비스가 실행 중 상태임을 알리는 7036 개가 더 표시됩니다.

4
JTL

@ JohnC 의 답변을 기반으로 확장

다음과 같은 XML 필터를 사용할 수 있습니다.

<QueryList>
<Query Id="0" Path="System">
<Select Path="Security">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Setup">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Thermal-Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='User32'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-WER-SystemErrorReporting'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
</Query>
</QueryList>

시간 범위에 대해 172800000을 아래 값으로 바꿀 수 있습니다.

86400000-지난 24 시간

172800000-지난 2 일

604800000-지난 7 일

서버/PC가 오프라인 상태가 된 시점부터 훨씬 자세하게 표시됩니다. 여기에는 Kernel-Power, User32 및 EventLog 이벤트가 포함됩니다.

4
elemer82

나는 커맨드 라인에서 활동을 수행하는 것을 선호합니다. 활용할 수있는 스 니펫의 시작은 다음과 같습니다. 가장 최근의 30,000 개의 시스템 레코드가 표시되고 해당 레코드 내에서 재부팅이 반환됩니다.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
2
Rakaim

@ user10082 comment 를 답변으로 바꾸십시오. 제안 된 솔루션은 한 줄짜리 Powershell 스크립트입니다.

Get-EventLog -LogName System |? {$_.EventID -in (6005,6006,6008,6009,1074,1076)} | ft TimeGenerated,EventId,Message -AutoSize –wrap
1
ocroquette