PowerShell を使用してシステムイベントを効果的に記録する方法
PowerShellは、システムイベントを詳しく調べるのに非常に便利です。特に、膨大なログを手動で調べる手間をかけずに、PCが最後に再起動またはシャットダウンした日時を追跡したい場合には、非常に便利です。PowerShellは本当に時間の節約になり、一度使い方を覚えれば、システムの健全性を監視したり、最新のシステムイベントについて知りたいという好奇心を満たしたりする様々な方法を見つけることができます。確かに、コマンドは最初は難しそうに思えるかもしれませんが、少し調べてみれば、すべてが理解できるようになります。ただし、特に詳細なログや自動化を行う場合は、PowerShellを管理者権限で実行する必要があることに注意してください。
PowerShell で最後の再起動時間を取得し、シャットダウンを追跡する方法
PowerShell スクリプトを使用して、コンピューターが最後に再起動された時刻を確認する
これは、前回の再起動日時を確認するための典型的なユースケースです。システムの動作が遅い場合や起動の問題をトラブルシューティングしている場合、この情報を素早く取得することで、最近の再起動を除外するのに役立ちます。このコマンドは、システムの起動とシャットダウンに関連する特定のイベントIDを検索し、最新のイベントのみを表示するため、非常に分かりやすいです。ただし、イベントログのサイズやタイミングによっては、設定によってはすぐに取得できない場合があります。正確でないと思われる場合は、しばらくしてから再実行するか、イベントログの設定を確認してください。PowerShellを管理者として実行すると、最良の結果が得られ、アクセスが確保されます。コマンドは次のとおりです。
Get-WinEvent -LogName System | Where-Object {$_. Id -eq 6005 -or $_. Id -eq 6006 -or $_. Id -eq 6008} | Select-Object -Last 1 | Format-List
起動時のイベントID(6005、6006、6008)を取得します。6008は突発的なシャットダウン(クラッシュまたは電源障害)です。「Select-Object -Last 1」は最新のイベントのみを抽出します。ログがオーバーフローしていない限り、かなり正確な最終再起動のタイムスタンプを取得できるはずです。日時、イベントの説明、場合によってはソース情報などの詳細が表示されます。
PowerShellで過去数回のシステムシャットダウンを確認する
マシンが最後にシャットダウンされた日時を知りたい場合は、イベントID 13を探すのが最善です。このイベントは、OSが正常にシャットダウンした時、またはエラーが発生した時に「システム」イベントログに記録されます。最新のシャットダウンエントリ10件を取得するには、次のコマンドを実行します。
Get-EventLog -Newest 10 -LogName "System" -InstanceID "13"
このコマンドは、最新のシャットダウンイベントをテーブルに整理して出力します。タイムスタンプやイベントの詳細を確認し、シャットダウンの発生頻度や発生時刻を分析できます。起動時の問題をトラブルシューティングしたい場合や、システムアクティビティについて知りたい場合に便利です。
システムが最後に再起動した時刻を確認する
同様に、システムの最終起動時刻を確認したい場合は、イベントID 12(「システムが起動しました」というメッセージ)を探します。上記と同じ要領で、InstanceIDを12に変更します。
Get-EventLog -Newest 10 -LogName "System" -InstanceID "12"
このコマンドは、マシンの電源が最後にオフからオンになった時刻を確認するのに役立ちます。これは、アップデートやメンテナンスのスケジュールを立てる前に役立つ情報です。自動化に興味があれば、定期的に実行して記録を残すようにスクリプトを作成することもできます。
Windowsはこれらのログをかなり頻繁に記録するため、これらのPowerShellコマンドを使うと、ちょっとしたシステム日記のようなものになります。ただし、ログはローテーションやクリーンアップが行われることがあるため、これらのログは永久に保存されるわけではなく、ログが切り捨てられた場合は最初のイベントが記録されない可能性があります。また、権限の問題が発生した場合は、PowerShellを管理者として起動してください。これで問題が解決することがよくあります。
PowerShell でシステムイベントを文書化する別の方法
もっと直接的なアプローチを好む場合、特に従来のコマンドラインツールに慣れている場合は、PowerShellのドキュメントにたくさんのコマンドが掲載されています。例えば、直近10回のシャットダウンを検索するコマンドはGet-EventLog -Newest 10 -LogName "System" -InstanceID "13"非常にシンプルで、結果はわかりやすい表形式で表示されます。そのため、どのログエントリが何に対応しているかを推測する必要はありません。データがそこにあります。
システムが最後にいつ再起動したかを確認したい場合は、IDを12に置き換えるだけです。簡単ですよね?これらのコマンドを自動化したり、スクリプトを作成したり、監視設定に統合したりすることもできます。PowerShellはそのような用途に十分な柔軟性を備えています。
- ログが欠落しているかコマンドが失敗する場合は、PowerShell が管理者権限で実行されていることを確認してください。
- ログはローテーションまたは削除される可能性があるため、最近のエントリが欠落している可能性があることに注意してください。
- コマンドを使用して、システムの起動/シャットダウンイベントのタイムラインをすばやく取得します。
これらのコマンドをちょっと試してみるだけで、システムのアクティビティを驚くほど明確に把握できます。必ずしも完璧ではありませんが、Windowsのログを手動で確認するよりははるかに便利です。
まとめ
PowerShellは単なる複雑なスクリプトツールではありません。ある環境ではすぐに使えるのに、別の環境では管理者として実行したり、ログ設定を調整したりする必要がありました。Windowsは必要以上に操作を複雑にしてしまうことがあるので、これはある程度理にかなっています。とにかく、システムイベントの追跡に興味があるなら、これらのコマンドはきっと役に立つでしょう。使い方さえ覚えてしまえば難しくはなく、マシンが実際に内部で何をしているのかを把握する便利な方法です。
まとめ
- PowerShellコマンドを使用して最後の起動/シャットダウンイベントを見つける
- フルアクセスのためにPowerShellを管理者として実行する
- イベントIDとログを定期的に確認して記録を残しましょう
- 定期的な監視が必要な場合はスクリプトで自動化する
これが役に立つことを祈る
この記事は役に立ちましたか?