Windowsの稼働時間は、環境で発生する日常的な問題のトラブルシューティングにサーバー管理者がよく使用する測定です。この記事では、Windows 10およびWindows Serverでブート時間をチェックする方法について学びます。最も簡単な方法を自由に使用してください。この記事を将来の参考資料としてご利用ください。
この記事は、2つのメインパートに分かれています。サーバーの稼働時間をチェックする方法と、Windowsの過去の稼働時間を見つける方法です。最初のパートでは、コンピュータが最後に再起動してからどれだけの時間稼働しているかを見つけます。この記事ではこれを「現在の」稼働時間と呼びます。
記事の2番目のパートでは、「歴史的な」稼働時間を見つけることに焦点を当てます。つまり、複数の再起動の間にWindowsシステムがどれだけ稼働していたかを示します。PowerShellを使用して、Windowsイベントログを解析して過去の稼働時間を取得する方法を学びます。
Windows 10およびWindows Serverでブート時間をチェックする方法
まず、現在のWindowsの稼働時間を見つけるためのいくつかの異なる方法について見ていきましょう。
このセクションでは、Windowsシステム上でローカルにコマンドを実行することによって、Windows 10でブート時間をチェックするデモンストレーションをご覧いただきます。ただし、PowerShellリモートを使用することで、これらのチェックをリモートで実行することもできます(タスクマネージャーは除く)。
タスクマネージャー
稼働時間を見つける最もシンプルで直接的な方法の1つは、単にタスクマネージャーを開くことです。
Windowsの稼働時間をタスクマネージャーで確認するには、Windowsタスクバーで右クリックし、タスクマネージャーを選択するか、Ctrl–Shift–Escを押します。タスクマネージャーが開いたら、パフォーマンスタブをクリックします。パフォーマンスタブの下には稼働時間というラベルが表示されます。

イベントビューア
イベントビューアは、ほとんどのシステム管理者が定期的に使用する非コマンドライン関連の稼働時間の取得方法として優れています。イベントID 6005と6006は、イベントログサービスの開始または停止を識別するために使用できます。これは起動/シャットダウン時に発生します。以下の手順に従って、イベントビューアを使用して稼働時間を特定します。
- スタートメニューを表示し、イベントビューアを検索します。またはコンピュータの管理からアクセスすることもできます。
- 左側のウィンドウでWindowsログセクションを展開し、システムを選択します。
- これでシステム関連のイベントのみをクエリしています。ウィンドウの右側にある「現在のログのフィルタリング…」をクリックします。
- イベントIDフィールド(デフォルトでは「すべてのイベントID」と表示されています)に適用可能なイベントIDを検索するために、「6005, 6006」と入力してOKをクリックします。
その後、2つの時間を比較して合計の稼働時間を作成することができます。また、これらのイベントの多くのインスタンスが保存されるため、稼働時間の履歴をクエリすることもできます!
これで、最後の起動時間だけでなく、起動/シャットダウンが行われたすべての既知の時間が表示されるフィルタリングされたイベントログを取得できます。
PowerShell
PowerShellには、稼働時間を取得するためのいくつかの異なる方法があります。WMIをクエリするか、Windowsイベントログを使用することができます。
WMIをクエリする場合、以下に示すようにLastBootUpTime
プロパティを選択するためにWin32_OperatingSystemクラスをクエリします。
PowerShellを使用してイベントログをクエリするには、Get-WinEvent
コマンドレットを使用します。マシンが起動された最後の時間を示すイベントID 6005または6006を検索する必要があります。
WMIC
WMICは、WMIのためのコマンドラインインターフェースを提供し、長年にわたって使用されてきた信頼性のある方法です。WMICを使用して稼働時間をクエリするには、Win32_OperatingSystem WMIクラスを再びクエリしますが、少し奥ではたらいています。以下のように、WMICの構文os get lastbootuptime
を使用して、サーバーが最後に起動された時刻を返すことができます。
WMICは、Windowsに事前インストールされているため、ダウンロードする必要はありません。
システム情報ユーティリティ
systeminfoコマンドは、コンピューターの詳細な構成情報を表示し、システムの稼働時間をクエリするために使用することができます。組み込みのfindコマンドラインツールを使用して、必要なデータを抽出するためにテキストを解析することができます。
単に、コマンドプロンプトまたはPowerShellを開き、systeminfo | find
と入力します。
systeminfo
を利用するためには、ダウンロードする必要はありません。Windowsには事前にインストールされています。
ネット統計コマンド
また、net stats
ともよく知られているネット統計を使用して、すばやくアップタイムをクエリできます。 net stats
コマンドはセッションに関する一般的な情報を返します。以下のStatistics since…の行で、マシンが起動した日付が表示されます。
アップタイムコマンド
Windowsのアップタイムを検索するための小さなポータブルユーティリティが必要な場合は、NeoSmart TechnologiesのUptimeコマンドをご利用ください。このユーティリティは、どのWindowsバージョンでもアップタイムをすばやくクエリするのに最適です。このツールの主な利点は便利さです。毎日何度も使用する場合は、この方法を検討してください。
ツールをダウンロードしたら、uptime.exeを%WinDir%\System32に展開します。次に、コマンドプロンプトを開き、単純にuptime
と入力します。

このツールをリモートで実行するには、まず、アップタイムをチェックするWindowsシステムにツールをコピーする必要があります。
Get-ServerUptimeReportスクリプトの紹介
PowerShellを自分で書かなくてもいいように、Get-ServerUptimeReport.ps1というコミュニティスクリプトをダウンロードしてください。
このスクリプトは、パラメータとしてコンピュータ名を指定することができます。それから、コンピュータのSystemイベントログを解析し、開始イベントと停止イベントを見つけて比較します。その後、イベントログがロールされるまでのサーバの合計稼働時間を返します。
以下は、このスクリプトをサーバで使用する例です。イベントログに含まれるすべてのイベントの合計稼働時間を、現在の稼働時間を含めて返します。
多くのサーバでWindowsの稼働時間を検索する
このスクリプトは、1つのサーバの稼働時間を多日にわたって素早く検索する方法です。しかし、一度にたくさんのサーバの情報が必要な場合はどうすればよいでしょうか?その場合、サーバのリストを収集し、それぞれのコンピュータ名をこのスクリプトに渡すことができます。
例えば、PowerShellコンソールでサーバの配列を定義します。この例では、変数の配列名は$servers
です。
実際のところ、サーバ名をActive Directory、Hyper-V、またはテキストファイルから取得するかもしれません。サーバ名の配列を構築できれば、問題ありません。
すべてのサーバ名を定義し、以下のようにループでそれぞれに繰り返します。
このコードは動作しますが、各行がどのサーバを参照しているのかはわかりません。以下のように計算されたプロパティを使用して出力にサーバ名を追加します。
これで、時間の経過に伴うサーバの稼働時間についての素早いレポートを提供する優れたツールができました!
まとめ
あなたは今、Windowsの稼働時間を見つけるさまざまな方法を見ました。どのオプションを選んでも、同じ情報を受け取ることができます。自分の状況に最適なものを選んでください。
そして、もし稼働時間の履歴のレポートが必要な場合は、Get-ServerUptimeReport
PowerShellスクリプトを忘れないでください!