Відповіді:
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"
для німецької мови
Ще один спосіб зробити це - використовувати наступний командний рядок, який працює і в 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 про точність при визначенні часу роботи системи.
Важлива примітка : цей метод визначає час останнього завантаження комп'ютера, а не його час роботи. 2 числа будуть різними, якщо ви використовуєте сон / сплячий режим.
wmic
, диспетчер завдань, і systeminfo
всі, здається, рахують назад від поточного часу за кількістю кліщів, на яких ПК був біг. Але якщо ви поставите свій комп'ютер в сплячому режимі (або сплячим режимі) багато, як я, фактичний загальний біжить час набагато менше часу з моменту останнього завантаження (тільки тридцять днів в моєму випадку за останні кілька місяців), скинувши що розрахунок повністю.
Там 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 -Class Win32_OperatingSystem | Select-Object LastBootUpTime
Єдине, що дратує, що Get-CimInstance іноді змінить назву деяких системних полів з WMI-об'єктів, наприклад, __SERVER тут. Вам доведеться використовувати або, CSName
або PSComputerName
, що, здається, працює для мене.
20121217175810.414696+120
Думаю, мені потрібен чортовий хороший калькулятор, щоб розрахувати час
CIM_DATETIME
формат, який вимагає стандарт. Це yyyymmddHHMMSS.mmmmmmsUUU
, використовуючи 24 години часу. Ось, ваш останній час перезавантаження - 17 грудня 2012 року о 17:58. msdn.microsoft.com/en-us/library/windows/desktop/…
Зверніть увагу , що , як зазначив Алекс/sleepstudy
команда не була додана до ОС Windows 8.1. / замість цього може працювати системний звіт .
Зауважте, що деякі з цих інших відповідей ніколи не працювали для мене, як, наприклад, у пошуку журналу подій, завжди були відсутні деякі записи. @ Відповідь Флоріса в цьому відношенні також правильна. Ось моє рішення:
У командній оболонці адміністратора запустіть таку команду:
powercfg /sleepstudy /output sleepstudy.html
Потім відкрийте файл sleepstudy.html
у браузері. Вас чекатимуть приголомшливо організовані статистичні дані щодо вимкнення / перезавантаження / очікування / сплячки за останні три дні . (тож запустіть періодично, якщо вам потрібно)
Приклад виходу: (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 знайдіть / фільтруйте журнал подій системи 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. Але він повинен працювати і в Windows 7, якщо у вас є принаймні PowerShell 3.0. Зауважте, що вам потрібно запустити його як адміністратор.
Повну документацію для команди ви знайдете тут: docs.microsoft.com
Пару відповідей згадує, net statistics workstation
і я зазначив, що обидва:
net statistics server
і
net statistics workstation
має надати дані щодо останнього завантаження в Statistics since ...
рядку.
Однак деякі версії ОС (наприклад, Svr2008 / 6.0) повертаються 1/1/1980 12:00
за датою при використанні server
. Тому я замовчуюсь workstation
.
Також ви можете скоротити деякі команди, як, наприклад, net stats workstation
і отримати однакові результати. Нарешті, якщо ви перестрибуєте з системи в систему, поле CMD за замовчуванням недостатньо велике, щоб відобразити всі результати команди. Тому я підкажу висновок, щоб more
уникнути прокручування, щоб побачити час завантаження. Тому моя команда за замовчуванням:
net stats workstation | more
Я хочу додати, що всі ці команди дійсно дають вам часові позначки, коли виконується «перезапуск» або «перезавантаження». І не тоді, коли буде зроблено відключення та запуск. Після відключення та запуску "lastbootuptime" відображатиме час, коли система дійсно "перезапуститься", а не фактичний час завантаження. Тож відключення / запуск дає такий же результат, як і повернення з призупинення / гібернації для часової позначки LastBootUpTime.
Те саме, що Макс відповідь ...
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%
... але в одному лінійці:
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 може здатися трохи безладною, але це дуже швидко в порівнянні з іншими реалізаціями програмного забезпечення або системної інформації, і ви можете легко змінити формат, оскільки це явно в коді.
Дякую Макс.