回答:
systeminfo
コマンドはあなたが必要とするものにほぼ正しいです。英語版のWindows 7では、次のこともできます。
systeminfo | find /i "Boot Time"
またはWMICの助けを借りて:
wmic os get lastbootuptime
Windows 7とWindows XPの主な違いは、Windows 7ではMicrosoftが最後の起動時間しか表示できないことです。
タスクマネージャーでも:
systeminfo
ローカライズされていることに注意してください。したがって"Boot Time"
、英語版のWindowsにのみ当てはまります。
systeminfo | find /i "Systemstartzeit"
ドイツ語
これを行うもう1つの方法は、Windows XPとWindows 7の両方で機能する次のコマンドラインを使用することです。
net statistics workstation
systeminfo
日付をフォーマットしている間は、代替フォーマットよりも高速であるという利点があります(フォーマットwmic
しません)。また、コンピューターのデバッグにこのコマンドを実際に使用している場合に役立つ他のいくつかの情報も取得します(特にを求めているためcmd
、プログラムでこれを行っていないことを前提としています)。
net statistics
コマンドの詳細については、http://technet.microsoft.com/en-us/library/bb490714.aspxを参照してください。
結果の例を次に示します(Windows 7 Pro SP1 x64のフランス語版を使用すると、ユーザー言語はコマンドラインにとって重要ではありません)。
(コンピューター名は意図的にぼやけています)
システムの稼働時間を決定する際の精度については、http://en.wikipedia.org/wiki/Uptimeの詳細をご覧ください。
重要な注意:この方法は、コンピューターの稼働時間ではなく、コンピューターが最後にブートされた時間を決定します。sleep / hibernateを使用する場合、2つの数字は異なります。
wmic
、タスクマネージャーなどはsysteminfo
すべて、PCのティック数によって現在の時刻から逆方向にカウントされるようですランニング。しかし、私と同じように、コンピューターをたくさんスリープ(または休止状態)にすると、実際の合計実行時間は前回のブートからの時間(私の場合は過去数か月で30日間のみ)よりもはるかに短くなります。その計算は完全に。
クラスのLastBootUpTime
プロパティがありWin32_OperatingSystem
ます。次のコマンドでWMICを使用できます。
wmic os get lastbootuptime
または、Powershellを使用している場合は、時間を厄介なWMI日時形式よりも読みやすいものに変換できます。
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
PowerShellの以降のバージョンでは、Get-CimInstanceを使用することもできます。Get-CimInstanceは、値を自動的に日時として返します。
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
唯一のいらいらすることは、Get-CimInstanceが一部のシステムフィールドの名前をWMIオブジェクト(ここでは__SERVERなど)から変更する場合があることです。CSName
またはのいずれかを使用する必要PSComputerName
があります。
20121217175810.414696+120
私は時間をカルクする上出来の計算が必要だと思う
CIM_DATETIME
は、標準で必要な形式です。それはですyyyymmddHHMMSS.mmmmmmsUUU
24時間の時間を使って、。ここで、最後の再起動時間は2012年12月17日午後5時58分です。 msdn.microsoft.com/en-us/library/windows/desktop/...
Alexが指摘したように、/sleepstudy
コマンドはWindows 8.1まで追加されなかったことに注意してください。代わりに/ systempowerreportが機能する場合があります。
これらの他の回答の一部は、たとえばイベントログの検索で常にいくつかのエントリが欠落しているなど、私にとってはうまくいかなかったことに注意してください。@Floriszの答えもその点で正しいです。ここに私の解決策があります:
管理者のcmdシェルで、次のコマンドを実行します。
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
起動時間:2017-03-08 07:37
set BOOTTIME
機能するかの説明が含まれていればより良いでしょう。
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
同様のServerFault質問から、イベントIDのWindowsシステムイベントログを検索/フィルターします6009
。
Windows 10の場合:Event Viewer > Windows Logs > System
次にFilter Current Log...
アクション。
これには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にあります。
いくつかの回答が言及されてnet statistics workstation
おり、私は両方に注意しました:
net statistics server
そして
net statistics workstation
Statistics since ...
回線の最後の起動に関するデータを提供する必要があります。
ただし、一部のOSバージョン(Svr2008 / 6.0など)は1/1/1980 12:00
、を使用すると日付を返しserver
ます。だから私はデフォルトになりworkstation
ます。
また、次のようなコマンドの一部を省略してnet stats workstation
、同じ結果を得ることができます。最後に、システムからシステムにジャンプする場合、デフォルトのCMDボックスはコマンドからのすべての結果を表示するのに十分な大きさではありません。したがってmore
、ブート時間を確認するためにスクロールアップしないように出力をパイプします。したがって、私のデフォルトのコマンドは次のとおりです。
net stats workstation | more
Max answerと同じ...
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の実装に比べて非常に高速であり、コード内で明示的であるため、フォーマットを簡単に変更できます。
マックスありがとう。