web-dev-qa-db-ja.com

Windows Serverの再起動/シャットダウンの履歴

Windowsサーバーが再起動またはシャットダウンするたびの履歴と、ユーザーが開始した、システムが開始した、システムがクラッシュしたなどの理由を簡単に確認するにはどうすればよいですか?

Windowsイベントログは明白な答えですが、表示する必要があるイベントの完全なリストは何ですか?

私の質問に部分的に答えるこれらの投稿を見つけました:

しかし、それらはAFAIKのすべてのシナリオをカバーしているわけではなく、情報は複数の回答に分散しているため、理解するのが困難です。

私はWindows Serverのいくつかのバージョンを持っているので、少なくともバージョン2008、2008 R2、2012、および2012 R2で機能するソリューションが理想的です。

92
JohnC

私が見つけることができる最も明確で最も簡潔な答えは次のとおりです。

監視するこれらのイベントIDをリストします(引用されていますが、記事から編集および再フォーマットされています)。

  • イベントID 6005alternate ):「イベントログサービスが開始されました。」これは、システムの起動と同義です。
  • イベントID 6006alternate ):「イベントログサービスが停止しました。」これは、システムのシャットダウンと同義です。
  • イベントID 6008alternate ): "以前のシステムシャットダウンは予期されていませんでした。"システムが正しくシャットダウンされなかった後にシステムが起動したことを記録します。
  • イベントID 6009alternate ):起動時に検出されたWindows製品名、バージョン、ビルド番号、サービスパック番号、およびオペレーティングシステムの種類を示します。
  • イベントID 6013:コンピューターの稼働時間を表示します。このIDのTechNetページはありません。

さらに、私のOPにリストされているサーバー障害の回答からさらに2、3を追加します。

  • イベントID 1074alternate ): "次の理由により、プロセスXがユーザーYの代わりにコンピューターの再起動/シャットダウンを開始しました:Z。"アプリケーションまたはユーザーが再起動またはシャットダウンを開始したことを示します。
  • イベントID 1076alternate ): "このコンピューターの最後の予期しないシャットダウンのためにユーザーXが提供した理由はYです。"シャットダウン特権を持つ最初のユーザーが予期しない再起動またはシャットダウン後にコンピューターにログオンし、発生の理由を提供したときに記録します。

見逃しましたか?

106
JohnC

JohnCは基本的にすべてをカバーしてきたので、私はこれをコメントとして残しておきますが、まだそうすることはできません。

彼が説明したイベントはかなり長い間使用されてきたので、あなたが言及したどのOSでも、それらのデスクトップの兄弟でも動作します。 TechNetの 6006 のページなど、彼がリンクしたイベントIDページは、Windows Server 2003について言及しています。

エレガントなシャットダウンがあった場合、ユーザーが開始したかどうかにかかわらず、いくつかの イベントID 7036 が表示され、さまざまなサービスが「停止状態になった」ことが示されます。マシンが再び起動すると、より多くの7036が表示され、サービスが実行状態に入っていることが通知されます。

4
JTL

@ JohnC sの回答に基づいて構築し、それを拡張する

次のような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 コメント を回答に変えます。提案されたソリューションは、1行のPowershellスクリプトです。

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