Windows 7を実行しているコンピューターが最後に再起動された日時を知る方法はありますか。
私は、イベントログを検索することを伴わない解決策を好むが、wmic
またはおそらくcmd
コマンドのようなものを好む。
systeminfo
コマンドは、あなたが必要としているものとほぼ同じです。英語版のWindows 7では、次のこともできます。
systeminfo | find /i "Boot Time"
またはWMICの助けを借りて:
wmic os get lastbootuptime
Windows 7とWindows XPの主な違いは、Windows 7 Microsoftでは前回の起動時間のみを表示できることです。
タスクマネージャでも:
これを行うもう1つの方法は、Windows XPとWindows 7の両方で機能する次のコマンドラインを使用することです。
net statistics workstation
日付をフォーマットしている間はsysteminfo
よりも速いという利点があります(wmic
はしていません)。あなたが実際にコンピュータのデバッグにこのコマンドを使っているなら、役に立つかもしれない他のいくつかの情報も得ます(あなたがcmd
を特に求めているので、私はあなたがプログラム的にこれをしていないと仮定します)。
net statistics
コマンドの詳細については、こちらを参照してください。 http://technet.Microsoft.com/ja-jp/library/bb490714.aspx
結果の例を次に示します(Windows 7 Pro SP1 x64のフランス語版を使用している場合、ユーザー言語はコマンドラインにはあまり関係ありません)。
(コンピュータ名は意図的にぼやけています)
システムの稼働時間を決定する際の正確さについては、 http://en.wikipedia.org/wiki/Uptime を参照してください。
重要な注意:このメソッドは、コンピュータの起動時間ではなく、最後に起動した日時を決定します。あなたが睡眠/休止状態を使うならば、2つの数は異なります。
Win32_OperatingSystem
クラスのLastBootUpTime
プロパティがあります。このコマンドで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 -Class Win32_OperatingSystem | Select-Object LastBootUpTime
唯一の不愉快なことは、Get-CimInstanceがWMIオブジェクトの一部のシステムフィールドの名前を変更することがあることです。 CSName
かPSComputerName
のどちらかを使わなければならないでしょう。
Alex が指摘したように、/sleepstudy
コマンドはWindows 8.1まで追加されていませんでした。 / systempowerreport が代わりに動作するかもしれません。
例えばイベントログを検索すると常にいくつかのエントリが欠けているように、これらの他の答えのうちのいくつかは私にはうまくいきませんでした。 @ Floriszの答えもその点で正しいです。これが私の解決策です:
管理者cmdシェルで、次のコマンドを実行します。
powercfg /sleepstudy /output sleepstudy.html
次にブラウザでsleepstudy.html
ファイルを開きます。最後の3日間から、シャットダウン/再起動/スタンバイ/休止状態に関する驚くほど整理された統計情報が表示されます。 (必要ならば定期的に実行してください)
出力例:(AFAIR、Showdown (Hybrid)
は高速起動を意味します)
Windows 7では私が好む
net statistics workstation
WMICは睡眠時間を考慮に入れていません、そして私は私のワークステーションを平日の就寝中にロックしたままにしておき、翌日に起きる準備をします。
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
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
2、3の回答でnet statistics workstation
が言及されていますが、両方とも次のように述べています。
net statistics server
そして
net statistics workstation
最後の起動に関するデータをStatistics since ...
行に入力してください。
ただし、server
を使用すると、一部のOSバージョン(Svr 2008/6.0など)は日付に1/1/1980 12:00
を返します。だから私はデフォルトでworkstation
にします。
net stats workstation
のようなコマンドの一部を省略しても同じ結果が得られます。最後に、システムからシステムへジャンプした場合、デフォルトのCMDボックスは、コマンドからのすべての結果を表示するのに十分な大きさではありません。そのため、起動時間を確認するためにスクロールアップしないように、出力をmore
にパイプ処理します。したがって、私のデフォルトのコマンドは次のとおりです。
net stats workstation | more
ほぼすべてのバージョンのウィンドウで、スワップファイルのタイムスタンプを確認できます。
dir/a:h c:\ pagefile.sys
「再起動」または「再起動」が行われたときに、これらすべてのコマンドが実際にあなたにタイムスタンプを与えることを付け加えたいと思います。シャットダウンや起動が完了したときではありません。シャットダウンして起動した後の 'lastbootuptime'は、システムが実際に '再起動'された時間であり、実際の起動時間ではありません。そのため、shutdown/startは、LastBootUpTimeタイムスタンプについてsuspend/hybernnateから戻ってきたのと同じ結果になります。
同様のServerFaultの質問 から、WindowsシステムイベントログでイベントID 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でも動作するはずです。 adminとして実行する必要があることに注意してください。
あなたはここでコマンドの完全なドキュメンテーションを見つけるでしょう: docs.Microsoft.com
最大回答と同じ...
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の実装と比べて非常に高速で、コード内で明示的になっているので簡単にフォーマットを変更できます。
ありがとうございます。