Come posso sapere quando il mio computer con Windows 7 è stato riavviato l'ultima volta?
Preferisco una soluzione che non prevede la ricerca nel registro eventi, ma qualcosa di simile wmic
o forse dei cmd
comandi.
Come posso sapere quando il mio computer con Windows 7 è stato riavviato l'ultima volta?
Preferisco una soluzione che non prevede la ricerca nel registro eventi, ma qualcosa di simile wmic
o forse dei cmd
comandi.
Risposte:
systeminfo
il comando è quasi giusto quello che ti serve. Su Windows 7 in inglese puoi anche fare:
systeminfo | find /i "Boot Time"
O con l'aiuto di WMIC :
wmic os get lastbootuptime
La differenza principale tra Windows 7 e Windows XP che in Windows 7 Microsoft può mostrare solo l'ultimo tempo di avvio.
Anche in Task Manager:
systeminfo
è localizzato. Quindi "Boot Time"
è vero solo per le versioni inglesi di Windows.
systeminfo | find /i "Systemstartzeit"
per il tedesco
Un altro modo per farlo è utilizzare la seguente riga di comando che funziona sia in Windows XP che in Windows 7:
net statistics workstation
Ha il vantaggio di essere più veloce systeminfo
dell'alternativa durante la formattazione della data (che wmic
non lo fa). Si ottengono anche alcune altre informazioni che possono essere utili se si utilizza effettivamente questo comando per il debug di un computer (dal momento che si sta chiedendo specificamente cmd
, presumo che non lo si stia facendo programmaticamente).
Puoi trovare maggiori informazioni sul net statistics
comando qui: http://technet.microsoft.com/en-us/library/bb490714.aspx
Ecco un esempio del risultato (usando una copia francese di Windows 7 Pro SP1 x64, la lingua dell'utente non conta molto per la riga di comando):
(il nome del computer è volutamente sfocato)
Maggiori dettagli su http://it.wikipedia.org/wiki/Uptime sull'accuratezza nella determinazione del tempo di attività del sistema.
Nota importante : questo metodo determina l'ultimo avvio del computer, non il tempo di attività. I 2 numeri saranno diversi se si utilizza la modalità di sospensione / ibernazione.
wmic
Task Manager e systeminfo
tutti sembrano contare all'indietro rispetto al tempo corrente dal numero di tick che il PC è stato in esecuzione. Ma se metti il tuo computer in sospensione (o ibernazione) molto, come faccio io, il tempo di esecuzione totale effettivo è molto inferiore al tempo trascorso dall'ultimo avvio (solo trenta giorni nel mio caso negli ultimi mesi), buttando via quel calcolo completamente.
C'è la LastBootUpTime
proprietà della Win32_OperatingSystem
classe. È possibile utilizzare WMIC con questo comando:
wmic os get lastbootuptime
O se usi Powershell, puoi convertire il tempo in qualcosa di più leggibile di quel fastidioso formato WMI datetime:
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
Si noti che nelle versioni successive di PowerShell, è anche possibile utilizzare Get-CimInstance, che restituirà automaticamente il valore come datetime:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
L'unica cosa irritante è che Get-CimInstance a volte cambia il nome di alcuni campi di sistema dagli oggetti WMI, come __SERVER qui. Dovresti usare uno dei due CSName
o PSComputerName
, che sembra funzionare per me.
20121217175810.414696+120
Penso di aver bisogno di una dannata calcolatrice per calcolare il tempo
CIM_DATETIME
, che è il formato richiesto dallo standard. È yyyymmddHHMMSS.mmmmmmsUUU
, usando 24 ore. Qui, il tuo ultimo orario di riavvio è il 17 dicembre 2012 alle 17:58. msdn.microsoft.com/en-us/library/windows/desktop/…
Si noti che, come sottolineato da Alex, il /sleepstudy
comando non è stato aggiunto fino a Windows 8.1. / systempowerreport potrebbe invece funzionare.
Si noti che alcune di queste altre risposte non hanno mai funzionato per me, come ad esempio la ricerca nel registro degli eventi mancava sempre alcune voci. Anche la risposta di Florisz è corretta al riguardo. Ecco la mia soluzione:
In una shell cmd dell'amministratore, eseguire il comando seguente:
powercfg /sleepstudy /output sleepstudy.html
Quindi aprire il file sleepstudy.html
in un browser. Sarai accolto con statistiche incredibilmente organizzate su arresto / riavvio / standby / ibernazione degli ultimi tre giorni . (quindi, esegui periodicamente se necessario)
Un esempio di output: (AFAIR, Showdown (Hybrid)
significa avvio rapido)
ancora un altro modo in un file batch per ottenere il tempo di avvio con wmic ma in forma leggibile dall'uomo:
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%
produzione :
DTS: 20170308073729.491206 + 060
BOOTTIME: 2017-03-08 07:37
set BOOTTIME
funziona.
Per ottenerlo in 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
}
}
Ecco il risultato:
CSname LastBootUpTime
------ --------------
LAPTOP1 2018-09-07 08:57:02
Da una domanda ServerFault simile , cerca / filtra il registro eventi di sistema di Windows per l'ID evento 6009
.
Su Windows 10: Event Viewer > Windows Logs > System
e quindi Filter Current Log...
sull'azione.
È possibile utilizzare PowerShell per questo.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
Questo ti darà un elenco dei tempi di spegnimento registrati.
Comando alternativo, ottimizzato meglio per le connessioni remote:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }
Esempio di output:
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
Il seguente comando ti fornirà un elenco dei tempi di avvio registrati.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}
Comando alternativo, ottimizzato meglio per le connessioni remote:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }
Esempio di output:
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
Ho provato questo su PowerShell 5.1 e Windows 10.0.15063. Ma dovrebbe funzionare anche su Windows 7, purché abbiate almeno PowerShell 3.0. Si noti che è necessario eseguirlo come amministratore.
La documentazione completa per il comando è disponibile qui: docs.microsoft.com
Un paio di risposte menzionano net statistics workstation
e ho notato che entrambi:
net statistics server
e
net statistics workstation
dovrebbe fornire i dati relativi all'ultimo avvio sulla Statistics since ...
linea.
Tuttavia, alcune versioni del sistema operativo (come Svr2008 / 6.0) restituiranno 1/1/1980 12:00
per la data durante l'utilizzo server
. Quindi per impostazione predefinita workstation
.
Inoltre puoi abbreviare alcuni dei comandi simili net stats workstation
e ottenere gli stessi risultati. Infine, se passi da un sistema all'altro, la casella CMD predefinita non è abbastanza grande per mostrare tutti i risultati dal comando. Quindi reindirizzerò l'output per more
evitare di scorrere verso l'alto per vedere il tempo di avvio. Pertanto, il mio comando predefinito è:
net stats workstation | more
Voglio aggiungere che tutti questi comandi ti danno davvero i timestamp quando viene fatto un 'riavvio' o 'riavvio'. E non al termine di uno spegnimento e un avvio. Dopo lo spegnimento e l'avvio, il "lastbootuptime" rifletterà il tempo in cui il sistema è realmente "riavviato" e non il tempo di avvio effettivo. Quindi shutdown / start dà lo stesso risultato del ritorno da suspend / hybernnate per il timestamp LastBootUpTime.
Come per la risposta massima ...
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%
... ma in linea:
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%
Questa implementazione di wmi può sembrare un po 'confusa ma è molto veloce rispetto ad altre implementazioni di PowerShell o Systeminfo e puoi facilmente cambiare il formato poiché è esplicito nel codice.
Grazie Max.