คุณต้องการได้รับโซลูชันนอกเวลาเพื่อค้นหาเวลาทำงานของเครื่องตั้งแต่การปิดระบบไฮบริดครั้งสุดท้าย / การเริ่มต้นอย่างรวดเร็วเกิดขึ้นใช่มั้ย
คุณสามารถรับข้อมูลนี้ (ตามที่ระบุไว้โดย @allquixotic) จาก EventLog โดยใช้ PowerShell ดังนี้:
PS c:\> Write-Host $("{0:c}" -f ((Get-Date)- (Get-EventLog -LogName system -Source "Microsoft-Windows-Power-Troubleshooter" -Newest 1).TimeGenerated))
หากต้องการฝังคำสั่ง powershell ลงในเชลล์สคริปต์ของ Windows คุณสามารถทำได้ดังนี้:
c:\> powershell.exe -nologo -command Write-Host $('Time since last ''Fast Startup'': {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -Source \"Microsoft-Windows-Power-Troubleshooter\" -Newest 1).TimeGenerated))
Howerver เพื่อให้สิ่งนี้เป็นประโยชน์กับคุณคุณสามารถกำหนดให้เป็นตัวแปรสภาพแวดล้อมแบบถาวรเช่นนี้แทน:
c:\> setx HardwareUptime "powershell.exe -nologo -command Write-Host $('Uptime since last ''Fast Startup'': {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -Source 'Microsoft-Windows-Power-Troubleshooter' -Newest 1).TimeGenerated))"
ดังนั้นคุณสามารถทำให้มันทำงานได้โดยเปิดcmd
หน้าต่างและทำสิ่งต่อไปนี้
c:\> %HardwareUpTime%
UPDATE:
ฉันเพิ่งพบในวันนี้ว่าการใช้รายการข้างต้นในบันทึกเหตุการณ์จะคำนึงถึง "Sleep" หรือโหมด suspend ดังนั้นการทำงาน%HardwareUpTime%
จะบอกเวลาที่ผ่านไปนับตั้งแต่พีซีเริ่มทำงานจากโหมดสลีปหากคุณปล่อยไว้
ดังนั้นนี่คือ:
setx HardwareUptime "powershell.exe -nologo -command Write-Host $('Uptime since hardware boot: {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -InstanceId 27 -Newest 1).TimeGenerated)); Write-Host $('Uptime since system resumed: {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -Source 'Microsoft-Windows-Power-Troubleshooter' -Newest 1).TimeGenerated));"
ฉันได้แก้ไขคำสั่งเล็กน้อยเพื่อให้ชัดเจนยิ่งขึ้นและให้ข้อมูลทั้งสองชิ้นแก่คุณ:
หมายเหตุ:หากระบบไม่เข้าสู่โหมดสลีปทั้งสองครั้งจะเหมือนกัน