Windowsが最後に再起動されたのはいつですか?
Windows 7を実行しているコンピュータが最後に再起動されたのはいつですか?
イベントログを検索するのではなく、wmic
や多分cmd
のコマンドのようなもので解決するのがいいですね。
Windows 7を実行しているコンピュータが最後に再起動されたのはいつですか?
イベントログを検索するのではなく、wmic
や多分cmd
のコマンドのようなもので解決するのがいいですね。
これを行うもう一つの方法は、Windows XP と Windows 7 の両方で動作する次のコマンドラインを使用することです:
net statistics workstation
これは、日付をフォーマットしながら (systeminfo
が行わない) wmic
の代替コマンドよりも高速であるという利点を持っています。また、このコマンドを実際にコンピュータのデバッグに使用している場合に役立ついくつかの他の情報も得られます (特に cmd
を求めているので、プログラム的にこれを行っていないことを前提としています)。 http://technet.microsoft.com/en-us/library/bb490714.aspx
結果の例です(Windows 7 Pro SP1 x64のフランス語コピーを使用しています。コマンドラインではユーザーの言語はあまり関係ありません):
(コンピュータ名は意図的にぼかしています)
詳細は http://en. wikipedia.org/wiki/Uptime システムの稼働時間を決定する際の精度について
重要な注意 : この方法は、コンピュータが最後に起動された時間を決定するもので、稼働時間を決定するものではありません。sleep/hibernateを使用している場合、2つの数値は異なります。
クラスのLastBootUpTime
プロパティがあります。WMICを使用するには、次のコマンドを使用します:
wmic os get lastbootuptime
Powershellを使用する場合は、時間を、厄介なWMIの日付書式よりも読みやすいものに変換することができます。
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
PowerShellのそれ以降のバージョンでは、Get-CimInstanceを使用することもできますが、これは自動的に値をdatetimeとして返します:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
唯一のイライラすることは、Get-CimInstanceは時々、WMIオブジェクトからいくつかのシステムフィールドの名前を変更することです。あなたは、私のために動作するように思えるWin32_OperatingSystem
またはCSName
のいずれかを使用する必要があります。
そこにあるWindows 10ユーザーのために……
Alex ](https://superuser.com/users/948433/alex)さんが指摘されているように、`/sleepstudy`コマンドはWindows 8.1まで追加されていないことに注意してください。
これらの他の回答の中には、例えばイベントログを検索しても、常にいくつかのエントリが見つからないなど、私にはうまくいかなかったものがあることに注意してください。この点では @Florisz さんの回答も正しいです。ここに私の解決策があります:
管理者コマンドシェルで、次のコマンドを実行してください:
powercfg /sleepstudy /output sleepstudy.html
それからブラウザでsleepstudy.html
ファイルを開いてください。すると、過去3日間のシャットダウン/再起動/スタンバイ/ハイバネーションの統計が、驚くほど整理された状態で表示されます。(なので、必要なら定期的に実行してください)
出力の一例です。(AFAIR、Showdown (Hybrid)
は高速起動を意味します)
wmicで起動時間を取得するバッチファイルのまだ別の方法ですが、人間が読める形式で :
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2% echo DTS : %DTS% echo BOOTTIME :%BOOTTIME%
出力 :
DTS : 20170308073729.491206+060
BOOTTIME : 2017-03-08 07:37
これにはPowerShellが使えます。
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
これはログに記録されたシャットダウン時間のリストを表示します。
代替コマンド、リモート接続用に最適化されています:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }
出力例:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-01-28 18:25:46 200 Critical Windows has shutdown
2016-11-01 19:55:21 200 Error Windows has shutdown
2016-10-29 00:18:38 200 Critical Windows has shutdown
2016-10-26 23:16:55 200 Warning Windows has shutdown
2016-10-26 15:37:40 200 Warning Windows has shutdown
2016-10-26 02:18:24 200 Warning Windows has shutdown
2016-10-26 02:10:34 200 Warning Windows has shutdown
2016-10-26 02:04:01 200 Warning Windows has shutdown
2016-10-25 14:23:11 200 Warning Windows has shutdown
2016-10-25 13:07:46 200 Error Windows has shutdown
2016-10-25 00:18:12 200 Error Windows has shutdown
2016-10-19 13:16:39 200 Critical Windows has shutdown
次のコマンドは、ログに記録された起動時間のリストを表示します。
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}
代替コマンド、リモート接続のために最適化されたより良い:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }
出力例:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-10-07 21:35:38 100 Critical Windows has started up
2017-01-28 18:25:48 100 Critical Windows has started up
2016-12-11 17:45:07 100 Critical Windows has started up
2016-11-16 13:26:52 100 Critical Windows has started up
2016-11-01 19:55:21 100 Critical Windows has started up
2016-10-29 00:18:39 100 Critical Windows has started up
2016-10-26 23:16:55 100 Error Windows has started up
2016-10-26 14:51:07 100 Error Windows has started up
2016-10-26 02:24:01 100 Error Windows has started up
2016-10-26 02:18:24 100 Critical Windows has started up
2016-10-26 02:10:34 100 Error Windows has started up
2016-10-26 02:04:01 100 Critical Windows has started up
2016-10-25 14:23:12 100 Error Windows has started up
2016-10-25 13:07:47 100 Error Windows has started up
2016-10-25 12:56:23 100 Error Windows has started up
2016-10-19 13:16:39 100 Critical Windows has started up
私はこれを PowerShell 5.1 と Windows 10.0.15063 でテストしました。しかし、それは少なくとも PowerShell 3.0 を持っている限り、Windows 7 で同様に働くべきです。管理者として実行する必要があることに注意してください。
コマンドの完全なドキュメントはここにあります docs.microsoft.com
PowerShellで取得するには:
Function Get-LastBoot {
if ($Host.Version.Major -lt 3) {
Get-WmiObject win32_operatingsystem | Select-Object CSname, @{n = 'LastBootUpTime'; e = {$_.ConverttoDateTime($_.lastbootuptime)}}
}
else {
Get-CimInstance -ClassName win32_operatingsystem | Select-Object CSname, LastBootUpTime
}
}
ここに結果があります:
CSname LastBootUpTime
------ --------------
LAPTOP1 2018-09-07 08:57:02
いくつかの回答の中に net statistics workstation
という記述がありますが、
net statistics server
net statistics workstation
net stats workstation | more
のどちらも Statistics since ...
行で最後に起動したときのデータが得られるはずです。なので、デフォルトでは1/1/1980 12:00
にしておきます。
また、server
のように一部のコマンドを省略しても同じ結果が得られます。最後に、システムからシステムへと飛び回ると、デフォルトのCMDボックスは、コマンドのすべての結果を表示するのに十分な大きさではありません。そこで私は、ブートタイムを見るために上にスクロールするのを避けるために、出力をworkstation
にパイプします。したがって、私のデフォルトコマンドは次のようになります。
似たようなServerFaultの質問から イベントID 6009
のWindowsシステムイベントログを検索/フィルタリングします。
Windows 10では: Event Viewer > Windows Logs > System
の後にFilter Current Log...
のアクションを実行します。
マックスの答えと同じ…
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
echo DTS : %DTS%
echo BOOTTIME :%BOOTTIME%
…しかし、oneliner の:
for /f %a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%a && echo %DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
この wmi の実装は少し厄介なように見えるかもしれないが、他の powershell か systeminfo の実装と比較されるそれは非常に速く、コードで明白であるので容易にフォーマットを変えることができる。