ฉันจะรู้ได้อย่างไรว่าคอมพิวเตอร์ของฉันที่ใช้ Windows 7 รีสตาร์ทครั้งล่าสุดเมื่อใด
ฉันชอบโซลูชันที่ไม่เกี่ยวข้องกับการค้นหาบันทึกเหตุการณ์ แต่มีบางอย่างที่เหมือนwmic
หรืออาจเป็นcmd
คำสั่ง
ฉันจะรู้ได้อย่างไรว่าคอมพิวเตอร์ของฉันที่ใช้ Windows 7 รีสตาร์ทครั้งล่าสุดเมื่อใด
ฉันชอบโซลูชันที่ไม่เกี่ยวข้องกับการค้นหาบันทึกเหตุการณ์ แต่มีบางอย่างที่เหมือนwmic
หรืออาจเป็นcmd
คำสั่ง
คำตอบ:
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
ผมสมมติว่าคุณจะไม่ทำเช่นนี้ programatically)
คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับnet statistics
คำสั่งได้ที่นี่: http://technet.microsoft.com/en-us/library/bb490714.aspx
นี่คือตัวอย่างของผลลัพธ์ (การใช้ Windows 7 Pro SP1 x64 แบบภาษาฝรั่งเศสภาษาผู้ใช้ไม่สำคัญสำหรับบรรทัดคำสั่ง):
(ชื่อคอมพิวเตอร์เบลออย่างจงใจ)
รายละเอียดเพิ่มเติมเกี่ยวกับhttp://en.wikipedia.org/wiki/Uptimeเกี่ยวกับความแม่นยำในการพิจารณาสถานะการออนไลน์
หมายเหตุสำคัญ : วิธีการนี้จะกำหนดว่าเมื่อใดที่คอมพิวเตอร์ถูกบูทครั้งสุดท้ายไม่ใช่เวลาทำงาน ตัวเลขทั้งสองจะแตกต่างกันหากคุณใช้โหมดสลีป / ไฮเบอร์เนต
wmic
Task Manager และsysteminfo
ดูเหมือนว่าจะนับถอยหลังจากเวลาปัจจุบันด้วยจำนวนของเห็บพีซีที่ได้รับ วิ่ง. แต่ถ้าคุณทำให้คอมพิวเตอร์ของคุณเข้าสู่โหมดสลีป (หรือไฮเบอร์เนต) มากอย่างที่ฉันทำเวลาที่ใช้งานจริงทั้งหมดนั้นน้อยกว่าเวลาตั้งแต่การบู๊ตครั้งล่าสุด (เพียงสามสิบวันในกรณีของฉันในช่วงหลายเดือนที่ผ่านมา) การคำนวณนั้นสมบูรณ์
มีLastBootUpTime
คุณสมบัติของWin32_OperatingSystem
ชั้นเรียน คุณสามารถใช้ WMIC ด้วยคำสั่งนี้:
wmic os get lastbootuptime
หรือถ้าคุณใช้ Powershell คุณสามารถแปลงเวลาเป็นสิ่งที่สามารถอ่านได้มากกว่ารูปแบบ WMI datetime ที่น่ารำคาญ:
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 เช่น __SERVER ที่นี่ คุณต้องใช้อย่างใดอย่างหนึ่งCSName
หรือPSComputerName
ซึ่งดูเหมือนจะทำงานให้ฉัน
20121217175810.414696+120
ฉันคิดว่าฉันต้องใช้เครื่องคิดเลขที่ดีเพื่อคำนวณเวลา
CIM_DATETIME
คือรูปแบบที่มาตรฐานกำหนด มันyyyymmddHHMMSS.mmmmmmsUUU
ใช้เวลา 24 ชั่วโมง ที่นี่เวลารีบูตครั้งล่าสุดของคุณคือ 17 ธันวาคม 2012 เวลา 17:58 น. msdn.microsoft.com/en-us/library/windows/desktop/?hl=th
โปรดทราบว่าเป็นแหลมออกโดยอเล็กซ์/sleepstudy
คำสั่งไม่ถูกเพิ่มจนกว่าของ Windows 8.1 / systempowerreportอาจทำงานแทน
โปรดทราบว่าคำตอบอื่น ๆ เหล่านี้ไม่ได้ผลสำหรับฉันเช่นการค้นหาบันทึกเหตุการณ์ตัวอย่างมักจะขาดบางรายการ คำตอบของ @ Florisz ก็ถูกต้องในเรื่องนั้นเช่นกัน นี่คือทางออกของฉัน:
ใน cmd shell ผู้ดูแลให้รันคำสั่งต่อไปนี้:
powercfg /sleepstudy /output sleepstudy.html
จากนั้นเปิดไฟล์sleepstudy.html
ในเบราว์เซอร์ คุณจะได้รับการต้อนรับด้วยสถิติการจัดระเบียบที่น่าอัศจรรย์เกี่ยวกับการปิด / รีบูต / สแตนด์บาย / ไฮเบอร์เนตจากสามวันที่ผ่านมา (ดังนั้นให้รันเป็นระยะหากคุณต้องการ)
ตัวอย่างของผลลัพธ์: (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
BOOTTIME: 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
ใน Windows ทุกรุ่นคุณสามารถตรวจสอบเวลาประทับของไฟล์ swap ได้
dir /a:hc:\pagefile.sys
จากคำถาม ServerFault คล้ายค้นหา / กรองบันทึกเหตุการณ์ของระบบ Windows 6009
สำหรับรหัสเหตุการณ์
บน Windows 10: Event Viewer > Windows Logs > System
จากนั้นเลือกFilter Current Log...
Action
คุณสามารถใช้ 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 ...
บรรทัด
แต่บางรุ่น OS (เช่น Svr2008 / 6.0) จะกลับมาสำหรับวันที่เมื่อใช้1/1/1980 12:00
ดังนั้นฉันจะเริ่มต้นกับserver
workstation
นอกจากนี้คุณยังสามารถย่อบางคำสั่งที่ต้องการnet stats workstation
และได้ผลลัพธ์เดียวกัน สุดท้ายถ้าคุณกระโดดจากระบบหนึ่งไปอีกระบบกล่อง CMD เริ่มต้นจะไม่ใหญ่พอที่จะแสดงผลลัพธ์ทั้งหมดจากคำสั่ง ดังนั้นฉันจะไพพ์เอาต์พุตเพื่อmore
หลีกเลี่ยงการเลื่อนขึ้นเพื่อดูเวลาบูต ดังนั้นคำสั่งเริ่มต้นของฉันคือ:
net stats workstation | more
ฉันต้องการเพิ่มว่าคำสั่งเหล่านี้ให้เวลากับคุณจริง ๆ เมื่อ 'รีสตาร์ท' หรือ 'รีบูต' เสร็จสิ้น และไม่เมื่อปิดและเริ่มต้นจะทำ หลังจากปิดและเริ่มต้น 'lastbootuptime' จะสะท้อนเวลาที่ระบบนั้น 'เริ่มใหม่' จริงๆและไม่ใช่เวลาบูตจริง ดังนั้นการปิด / เริ่มให้ผลเช่นเดียวกับการกลับมาจาก suspend / hybernnate สำหรับการประทับเวลา 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%
... แต่ใน 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 อื่น ๆ และคุณสามารถเปลี่ยนรูปแบบได้อย่างง่ายดายเนื่องจากมันชัดเจนในโค้ด
ขอบคุณมาก