Làm sao tôi biết khi máy tính chạy Windows 7 được khởi động lại lần cuối?
Tôi thích một giải pháp không liên quan đến việc tìm kiếm nhật ký sự kiện, nhưng một số thứ như wmic
hoặc có thể là cmd
các lệnh.
Làm sao tôi biết khi máy tính chạy Windows 7 được khởi động lại lần cuối?
Tôi thích một giải pháp không liên quan đến việc tìm kiếm nhật ký sự kiện, nhưng một số thứ như wmic
hoặc có thể là cmd
các lệnh.
Câu trả lời:
systeminfo
lệnh gần như đúng những gì bạn cần. Trên tiếng Anh Windows 7 bạn cũng có thể làm:
systeminfo | find /i "Boot Time"
Hoặc với sự giúp đỡ của WMIC :
wmic os get lastbootuptime
Sự khác biệt chính giữa Windows 7 và Windows XP mà trong Windows 7 Microsoft chỉ có thể hiển thị thời gian khởi động lần cuối.
Cũng trong Trình quản lý tác vụ:
systeminfo
được địa phương hóa. Vì vậy, điều "Boot Time"
này chỉ đúng với các phiên bản tiếng Anh của Windows.
systeminfo | find /i "Systemstartzeit"
cho tiếng Đức
Một cách khác để làm điều này là sử dụng dòng lệnh sau hoạt động cả trong Windows XP và Windows 7:
net statistics workstation
Nó có lợi thế là nhanh hơn so với systeminfo
thay thế trong khi định dạng ngày ( wmic
không có). Bạn cũng nhận được một vài thông tin khác có thể hữu ích nếu bạn thực sự sử dụng lệnh này để gỡ lỗi máy tính (vì bạn đang hỏi cụ thể cmd
, tôi cho rằng bạn không làm việc này theo chương trình).
Bạn có thể tìm thêm thông tin về net statistics
lệnh tại đây: http://technet.microsoft.com/en-us/l Library / bb490714.aspx
Dưới đây là ví dụ về kết quả (sử dụng bản sao tiếng Pháp của Windows 7 Pro SP1 x64, ngôn ngữ người dùng không quan trọng lắm đối với dòng lệnh):
(tên máy tính bị làm mờ đi)
Thêm chi tiết về http://en.wikipedia.org/wiki/Uptime về độ chính xác khi xác định thời gian hoạt động của hệ thống.
Lưu ý quan trọng : phương pháp này xác định khi máy tính được khởi động lần cuối, không phải thời gian hoạt động. 2 số sẽ khác nhau nếu bạn sử dụng chế độ ngủ / ngủ đông.
wmic
, Trình quản lý tác vụ và systeminfo
tất cả dường như đếm ngược từ thời điểm hiện tại theo số lần đánh dấu của PC đang chạy. Nhưng nếu bạn đặt máy tính của bạn ngủ (hoặc ngủ đông) rất nhiều, như tôi làm, tổng thời gian chạy thực tế ít hơn nhiều so với thời gian kể từ lần khởi động cuối cùng (chỉ ba mươi ngày trong trường hợp của tôi trong vài tháng qua), hãy bỏ đi Tính toán đó hoàn toàn.
Có LastBootUpTime
tài sản của Win32_OperatingSystem
lớp. Bạn có thể sử dụng WMIC với lệnh này:
wmic os get lastbootuptime
Hoặc nếu bạn sử dụng Powershell, bạn có thể chuyển đổi thời gian thành thứ gì đó dễ đọc hơn định dạng thời gian WMI phiền phức đó:
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
Lưu ý rằng trong các phiên bản sau của PowerShell, bạn cũng có thể sử dụng Get-CimInstance, nó sẽ tự động trả về giá trị dưới dạng datetime:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
Điều khó chịu duy nhất là đôi khi Get-CimInstance sẽ thay đổi tên của một số trường hệ thống từ các đối tượng WMI, chẳng hạn như __SERVER tại đây. Bạn sẽ phải sử dụng một trong hai CSName
hoặc PSComputerName
, dường như làm việc cho tôi.
20121217175810.414696+120
Tôi nghĩ rằng tôi cần máy tính tốt chết tiệt để tính thời gian
CIM_DATETIME
định dạng theo yêu cầu của tiêu chuẩn. Đó là yyyymmddHHMMSS.mmmmmmsUUU
, sử dụng thời gian 24 giờ. Tại đây, thời gian khởi động lại cuối cùng của bạn là ngày 17 tháng 12 năm 2012 lúc 5:58 chiều. msdn.microsoft.com/en-us/l Library / windows / desktop / trộm
Xin lưu ý rằng như được chỉ ra bởi Alex , /sleepstudy
lệnh không được thêm cho đến Windows 8.1. / systempowerreport có thể hoạt động thay thế.
Lưu ý rằng một số câu trả lời khác không bao giờ có hiệu quả đối với tôi, chẳng hạn như tìm kiếm nhật ký sự kiện luôn thiếu một số mục. Câu trả lời của @ Florisz cũng đúng trong vấn đề đó. Đây là giải pháp của tôi:
Trong shell cmd của quản trị viên, hãy chạy lệnh sau:
powercfg /sleepstudy /output sleepstudy.html
Sau đó mở tệp sleepstudy.html
trong trình duyệt. Bạn sẽ được chào đón với các số liệu thống kê đáng kinh ngạc về tắt máy / khởi động lại / chờ / ngủ đông từ ba ngày qua . (vì vậy, hãy chạy định kỳ nếu bạn cần)
Một ví dụ về đầu ra: (AFAIR, Showdown (Hybrid)
có nghĩa là khởi động nhanh)
còn một cách khác trong một tệp bó để có thời gian khởi động với wmic nhưng ở dạng người có thể đọc được:
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%
đầu ra:
DTS: 20170308073729.491206 + 060
BOOTTIME: 2017 / 03-08 07:37
set BOOTTIME
hoạt động.
Để tải nó trong 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
}
}
Đây là kết quả:
CSname LastBootUpTime
------ --------------
LAPTOP1 2018-09-07 08:57:02
Từ một câu hỏi ServerFault tương tự , tìm kiếm / lọc Nhật ký sự kiện hệ thống Windows cho ID sự kiện 6009
.
Trên Windows 10: Event Viewer > Windows Logs > System
và sau đó là Filter Current Log...
Hành động.
Bạn có thể sử dụng PowerShell cho việc này.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
Điều này sẽ cung cấp cho bạn một danh sách thời gian tắt máy đăng nhập.
Lệnh thay thế, được tối ưu hóa tốt hơn cho các kết nối từ xa:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }
Ví dụ đầu ra:
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
Lệnh sau sẽ cung cấp cho bạn một danh sách thời gian khởi động được ghi lại.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}
Lệnh thay thế, được tối ưu hóa tốt hơn cho các kết nối từ xa:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }
Ví dụ đầu ra:
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
Tôi đã thử nghiệm điều này trên PowerShell 5.1 và Windows 10.0.15063. Nhưng nó cũng hoạt động trên Windows 7, miễn là bạn có ít nhất PowerShell 3.0. Lưu ý rằng bạn cần chạy nó với tư cách quản trị viên.
Bạn sẽ tìm thấy tài liệu đầy đủ cho lệnh ở đây: docs.microsoft.com
Một vài câu trả lời đề cập net statistics workstation
và tôi đã lưu ý rằng cả hai:
net statistics server
và
net statistics workstation
nên cung cấp dữ liệu liên quan đến lần khởi động cuối cùng trên Statistics since ...
dòng.
Tuy nhiên, một số phiên bản HĐH (như Svr2008 / 6.0) sẽ trở lại 1/1/1980 12:00
vào ngày khi sử dụng server
. Vì vậy, tôi sẽ mặc định workstation
.
Ngoài ra, bạn có thể viết tắt một số lệnh như net stats workstation
và nhận được kết quả tương tự. Cuối cùng, nếu bạn nhảy từ hệ thống này sang hệ thống khác, hộp CMD mặc định không đủ lớn để hiển thị tất cả kết quả từ lệnh. Vì vậy, tôi sẽ dẫn đầu ra more
để tránh cuộn lên để xem thời gian khởi động. Do đó, lệnh mặc định của tôi là:
net stats workstation | more
Tôi muốn thêm, rằng tất cả các lệnh này thực sự cung cấp cho bạn dấu thời gian khi thực hiện 'khởi động lại' hoặc 'khởi động lại'. Và không phải khi tắt máy và bắt đầu. Sau khi tắt máy và bắt đầu 'Lastbootuptime' sẽ phản ánh thời gian hệ thống thực sự được 'khởi động lại' chứ không phải thời gian khởi động thực tế. Vì vậy, tắt / bắt đầu cho kết quả tương tự như quay trở lại từ đình chỉ / hybernnate cho dấu thời gian LastBootUpTime.
Giống như câu trả lời Max ...
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%
... nhưng trong 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%
Việc triển khai wmi này có thể hơi lộn xộn nhưng nó rất nhanh so với các triển khai powershell hoặc systeminfo khác và bạn có thể dễ dàng thay đổi định dạng vì nó rõ ràng trong mã.
Cảm ơn bạn Max.