2012-12-24 14:24:07 +0000 2012-12-24 14:24:07 +0000
112
112

Come posso sapere quando è stato riavviato Windows per l'ultima volta?

Come posso sapere quando è stato riavviato il mio computer con Windows 7?

Preferisco una soluzione che non preveda la ricerca nel registro degli eventi, ma qualcosa come wmic o forse cmd comandi.

Risposte (14)

173
173
173
2012-12-24 14:32:31 +0000

Il comando systeminfo è quello che ci vuole. Su Windows 7 in inglese si può anche fare:

systeminfo | find /i "Boot Time"

o con l'aiuto di WMIC :

wmic os get lastbootuptime
``` &001 


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: 


![enter image description here](https://i.stack.imgur.com/zG6B3.jpg)
25
25
25
2014-12-09 15:34:46 +0000

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 dell'alternativa systeminfo durante la formattazione della data (che wmic non ha). Si ottengono anche alcune altre informazioni che possono essere utili se si sta effettivamente utilizzando questo comando per il debug di un computer (dal momento che si chiede specificamente per cmd, presumo che non lo si faccia in modo programmatico).

Potete trovare maggiori informazioni sul comando net statistics qui: http://technet.microsoft.com/en-us/library/bb490714.aspx (http://en.wikipedia.org/wiki/Uptime)

Ecco un esempio del risultato (usando una copia francese di Windows 7 Pro SP1 x64, la lingua dell'utente non ha molta importanza per la riga di comando):

(il nome del computer è volutamente offuscato)


Maggiori dettagli su [ http://en. wikipedia.org/wiki/Uptime ]&003 sulla precisione nel determinare l'uptime del sistema.


Nota importante : questo metodo determina quando il computer è stato avviato l'ultima volta, non il suo uptime. I 2 numeri saranno diversi se si usa sleep/hibernate.

19
19
19
2012-12-24 14:41:41 +0000

C'è la proprietà LastBootUpTime della classe Win32_OperatingSystem. Si può usare WMIC con questo comando:

wmic os get lastbootuptime

O se si usa Powershell, si può convertire l'ora in qualcosa di più leggibile di quel fastidioso formato di data e ora WMI:

Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
``` ```
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

Si noti che nelle versioni successive di PowerShell, si può anche usare Get-CimInstance, che restituirà automaticamente il valore come datario:

&001 &001

L'unica cosa irritante è che Get-CimInstance a volte cambierà il nome di alcuni campi del sistema da oggetti WMI, come __SERVER qui. Dovreste usare o CSName o PSComputerName, che sembra funzionare per me.

9
9
9
2017-03-28 13:19:57 +0000
4
4
4
2018-08-21 07:51:22 +0000

Si prega di notare che, come sottolineato da Alex , il comando /sleepstudy 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 dell'event-log per esempio mancava sempre qualche voce. Anche la risposta di @Florisz è corretta a questo proposito. Ecco la mia soluzione:

In una shell cmd dell'amministratore, eseguire il seguente comando:

powercfg /sleepstudy /output sleepstudy.html

Poi aprire il file sleepstudy.html in un browser. Sarete accolti con statistiche sorprendentemente organizzate sullo spegnimento/riavvio/standby/ibernazione dagli ultimi tre giorni. (quindi, eseguire periodicamente se necessario)

Un esempio di un'uscita: (AFAIR, Showdown (Hybrid) significa avvio rapido)

Fonte / Documentazione | Anche in relazione

2
2
2
2016-05-24 20:46:59 +0000

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%

uscita :

DTS : 20170308073729.491206+060

BOOTTIME : 2017-03-08 07:37

2
2
2
2017-10-07 19:32:19 +0000

È possibile utilizzare PowerShell per questo.

Spegnimento


Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
``` ```
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }

Questo vi darà un elenco dei tempi di spegnimento registrati.

Comando alternativo, meglio ottimizzato per le connessioni remote:

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}

Uscita di esempio:

Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }

Startup


Il seguente comando vi darà un elenco dei tempi di avvio registrati.

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
``` &001 

Comando alternativo, meglio ottimizzato per le connessioni remote: 


&001 &001 

Uscita di esempio: 


&001 &001 


Ho testato questo comando su PowerShell 5.1 e Windows 10.0.15063. Ma dovrebbe funzionare anche su Windows 7, purché si abbia almeno PowerShell 3.0. Si noti che è necessario eseguirlo come admin. 


Troverete la documentazione completa del comando qui [ docs.microsoft.com ](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.diagnostics/get-winevent?view=powershell-5.1)
2
2
2
2016-07-25 15:12:29 +0000

Su quasi tutte le versioni di Windows è possibile controllare il timestamp sul file di swap.

dir /a:h c:\pagefile.sys

2
2
2
2015-07-08 20:41:51 +0000

Su Windows 7 preferisco

net statistics workstation

WMIC non tiene conto del tempo di sonno, e lascio la mia postazione di lavoro bloccata al lavoro a dormire durante la settimana, pronta a svegliarsi il giorno dopo.

2
2
2
2018-09-12 14:34:05 +0000

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
1
1
1
2018-08-17 11:38:18 +0000

Voglio aggiungere, che tutti questi comandi vi danno davvero i timestamp quando un ‘riavvio’ o un ‘reboot’ è fatto. E non quando un arresto e un avvio è fatto. Dopo lo spegnimento e l'avvio il ‘lastbootuptime’ rifletterà il tempo in cui il sistema viene realmente ‘riavviato’ e non il tempo di avvio effettivo. Quindi lo spegnimento/avvio dà lo stesso risultato del ritorno da sospendere/ibernizzare per il timestamp LastBootUpTime.

1
1
1
2018-05-23 16:10:40 +0000

Un paio di risposte menzionano net statistics workstation e ho notato che entrambi :

net statistics server

e

net statistics workstation

dovrebbero fornire i dati relativi all'ultimo avvio sulla linea Statistics since ....

Tuttavia, alcune versioni del sistema operativo (come Svr2008/6.0) restituiranno 1/1/1980 12:00 per la data di utilizzo di server. Quindi, per impostazione predefinita, userò workstation.

Inoltre, è possibile abbreviare alcuni dei comandi come net stats workstation e ottenere gli stessi risultati. Infine, se si salta da un sistema all'altro, la casella CMD predefinita non è abbastanza grande da mostrare tutti i risultati del comando. Quindi, posizionerò l'output su more per evitare di scorrere verso l'alto per vedere il tempo di avvio. Pertanto, il mio comando predefinito è:

net stats workstation | more

1
1
1
2017-07-17 18:08:00 +0000

Da una domanda simile di ServerFault , cercare/filtrare il Registro eventi del sistema Windows per l'ID evento 6009.

Su Windows 10: Event Viewer > Windows Logs > System e poi l'azione Filter Current Log....

0
0
0
2019-02-21 16:36:38 +0000

Come la risposta di 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%
``` ```
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%

…ma in oneliner:

&001 &001

Questa implementazione wmi può sembrare un po’ disordinata ma è molto veloce rispetto ad altre implementazioni powerhell o systeminfo e si può facilmente cambiare il formato in quanto è esplicito nel codice.

Grazie Max.