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


105

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 wmico forse dei cmdcomandi.

Risposte:


164

systeminfoil 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:

inserisci qui la descrizione dell'immagine


Inoltre, esiste un elenco cumulativo degli ultimi reset s ?
Royi Namir,

2
@RoyiNamir: con un elenco googling di riavvii (sembra molto simile):Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
m0nhawk

è PowerShell .....?
Royi Namir,

3
Sii consapevole che systeminfoè localizzato. Quindi "Boot Time"è vero solo per le versioni inglesi di Windows.
Markus Mitterauer,

1
systeminfo | find /i "Systemstartzeit"per il tedesco
schoetbi

24

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 systeminfodell'alternativa durante la formattazione della data (che wmicnon 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 statisticscomando 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):

esempio

(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.


qualsiasi idea del perché questo non legga lo stesso che usare systeminfo o wmic ... è probabilmente trascurabile, ma differisce sul mio sistema da oltre 2 minuti
Anthony Shaw,

È diverso per circa 40 secondi anche sul mio computer. Non ho idea del perché non sia esattamente lo stesso, immagino che il servizio si avvii un po 'più tardi. Alcune informazioni interessanti su en.wikipedia.org/wiki/Uptime
dnLL

2
Differisce da oltre nove mesi sui miei :-) Questa è l'unica risposta corretta. Fornisce il datestamp effettivo dell'ultimo avvio (o quando qualsiasi servizio associato è stato avviato dopo l'avvio, così vicino ad esso), mentre wmicTask Manager e systeminfotutti 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.
Cameron,

Grazie @cameron, ho aggiunto una nota alla fine della mia risposta. La domanda originale riguardava davvero l'avvio del computer e non il tempo di attività, quindi è un dettaglio importante. Wikipedia menziona in qualche modo la differenza nell'articolo di uptime che ho collegato.
dnLL

Non è proprio l'ultimo "avvio": è l'ora in cui è stato avviato il servizio Server o Workstation, a seconda di quale query richiedi le statistiche. Dal momento che questi non si fermano mai durante una normale sessione di Windows, è una comoda approssimazione dell'ultimo avvio.
oldmud0

18

C'è la LastBootUpTimeproprietà della Win32_OperatingSystemclasse. È 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 CSNameo PSComputerName, che sembra funzionare per me.


20121217175810.414696+120Penso di aver bisogno di una dannata calcolatrice per calcolare il tempo
Royi Namir il

7
@Royi Sì, i timestamp WMI sono stupidi. È un 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/…
Bacon Bits

1
Il pratico vantaggio di usare il metodo get-wmiobject è che rende banale ottenere anche i tempi di avvio dei computer remoti. Basta aggiungere "-computer <nomecomputer>" al comando (prima della pipe)
camster342

8

Per gli utenti di Windows 10 là fuori ....

Proprietà del sistema Windows 10 - Performance Up time


1
Questo mostra il tempo di attività (cioè per quanto tempo il sistema è in esecuzione) non l'ora in cui il sistema è stato avviato come richiesto da OP.
Dawid Ferenczy Rogožan,

1
Vero, ma questo è ancora utile.
martedì

Oggi il mio notebook Windows 10 mostra un tempo di attività fasullo. L'ho spento ieri sera, l'ho acceso meno di un'ora fa e Task Manager dice che è attivo per 5: 19: 40: 10.
tbc0

Windows 10 in realtà non si spegne quando si spegne, dimentico perché esattamente. Tuttavia, se si desidera ripristinare il timer di uptime, è necessario riavviare.
Daniel Hayes,

3

Si noti che, come sottolineato da Alex, il /sleepstudycomando 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.htmlin 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)

inserisci qui la descrizione dell'immagine

Fonte / documentazione | Anche correlati


1
Questo è quello che stavo cercando su Windows 10! Non riavvio, normalmente arresto. LastBootTime si riferisce solo ai riavvii su Windows 10.
tbc0

2

Su Windows 7 preferisco

net statistics workstation

WMIC non tiene conto del tempo di sonno e lascio la mia workstation bloccata sul posto di lavoro durante la settimana, pronta a svegliarmi il giorno successivo.


2

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


1
Questa risposta sarebbe migliore se includesse una spiegazione di come set BOOTTIMEfunziona.
un CVn

2

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

In quasi tutte le versioni di Windows è possibile controllare il timestamp sul file di scambio.

dir /a:hc:\pagefile.sys


1
Io non la penso così. Almeno su Windows 10, quando ho controllato, il tempo del file di scambio era più recente del tempo di avvio.
martedì


1

È possibile utilizzare PowerShell per questo.

Spegnimento


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

Avviare


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


Non ha funzionato per me su Windows 10. Neanche come amministratore. Vedi snag.gy/HcEn8j.jpg
tbc0

1

Un paio di risposte menzionano net statistics workstatione 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:00per la data durante l'utilizzo server. Quindi per impostazione predefinita workstation.

Inoltre puoi abbreviare alcuni dei comandi simili net stats workstatione 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 moreevitare di scorrere verso l'alto per vedere il tempo di avvio. Pertanto, il mio comando predefinito è:

net stats workstation | more

comando


1

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.


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.