web-dev-qa-db-fra.com

Comment savoir quand Windows a été redémarré pour la dernière fois?

Comment savoir quand mon ordinateur exécutant Windows 7 a été redémarré?

Je préfère une solution qui n'implique pas la recherche dans le journal des événements, mais plutôt des commandes comme wmic ou peut-être cmd.

103
Royi Namir

systeminfo command correspond presque à ce dont vous avez besoin. Sous Windows 7 anglais, vous pouvez également effectuer les tâches suivantes:

systeminfo | find /i "Boot Time"

Ou avec l'aide deWMIC:

wmic os get lastbootuptime

La principale différence entre Windows 7 et Windows XP est que Windows 7 ne montre que le dernier temps de démarrage.


Également dans le gestionnaire de tâches:

enter image description here

162
m0nhawk

Une autre façon de faire consiste à utiliser la ligne de commande suivante, qui fonctionne à la fois sous Windows XP et Windows 7:

net statistics workstation

Il présente l'avantage d'être plus rapide que l'option systeminfo lors du formatage de la date (ce que wmic ne fait pas). Vous obtenez également quelques autres informations qui peuvent être utiles si vous utilisez réellement cette commande pour déboguer un ordinateur (puisque vous demandez spécifiquement cmd, je suppose que vous ne le faites pas par programme).

Vous pouvez trouver plus d'informations sur la commande net statistics ici: http://technet.Microsoft.com/en-us/library/bb490714.aspx

Voici un exemple de résultat (en utilisant une copie française de Windows 7 Pro SP1 x64, la langue de l'utilisateur importe peu pour la ligne de commande):

example

(le nom de l'ordinateur est délibérément flou)


Plus de détails sur http://en.wikipedia.org/wiki/Uptime sur la précision lors de la détermination de la disponibilité du système.


Remarque importante : cette méthode détermine le dernier démarrage de l'ordinateur, et non son temps de disponibilité. Les 2 numéros seront différents si vous utilisez sommeil/veille prolongée.

23
dnLL

Il y a la propriété LastBootUpTime de la classe Win32_OperatingSystem. Vous pouvez utiliser WMIC avec cette commande:

wmic os get lastbootuptime

Ou, si vous utilisez Powershell, vous pouvez convertir l'heure en un format plus lisible que ce format de date/heure agaçant WMI:

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

Notez que dans les versions ultérieures de PowerShell, vous pouvez également utiliser Get-CimInstance, qui renverra automatiquement la valeur en tant que date-heure:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

Le seul inconvénient est que Get-CimInstance modifie parfois le nom de certains champs système à partir d'objets WMI, tels que __SERVER ici. Vous devez utiliser soit CSName, soit PSComputerName, ce qui semble fonctionner pour moi.

18
Bacon Bits

Pour les utilisateurs de Windows 10 ...

 System Properties Windows 10 - Performance Up time

8
Jonathan Tepper

Sur Windows 7 je préfère

net statistics workstation

WMIC ne prend pas en compte le temps de sommeil et je laisse mon poste de travail bloqué au travail, dormant toute la semaine, prêt à se lever le lendemain.

2
tbc0

encore une autre manière dans un fichier batch d’obtenir le temps de démarrage avec wmic mais sous une forme lisible par l’homme:

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%

sortie:

DTS: 20170308073729.491206 + 060

HEURE DE BOOT: 2017-03-08 07:37

2
Max

Veuillez noter que, comme indiqué par Alex la commande /sleepstudy n'a pas été ajoutée avant Windows 8.1. /systempowerreport pourrait fonctionner à la place.

Notez que certaines de ces autres réponses n'ont jamais fonctionné pour moi. Par exemple, la recherche dans le journal des événements manquait toujours de certaines entrées. La réponse de @ Florisz est également correcte à cet égard. Voici ma solution:

Dans un shell d'administrateur, exécutez la commande suivante:

powercfg /sleepstudy /output sleepstudy.html

Puis ouvrez le fichier sleepstudy.html dans un navigateur. Vous serez accueilli avec des statistiques étonnamment bien organisées sur l’arrêt/le redémarrage/la veille/l’hibernation à partir du les trois derniers jours . (donc, lancez périodiquement si vous avez besoin)

Exemple de sortie: (AFAIR, Showdown (Hybrid) signifie un démarrage rapide)

 enter image description here

Source/Documentation | Aussi lié

2
confetti

Pour l'obtenir dans 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
        }
    }

Voici le résultat:

CSname  LastBootUpTime
------  --------------
LAPTOP1 2018-09-07 08:57:02
1
PollusB

Sur à peu près n'importe quelle version de Windows, vous pouvez vérifier l'horodatage sur le fichier d'échange.

dir/a: h c:\pagefile.sys

1
Chuck

Je veux ajouter que toutes ces commandes vous donnent vraiment les horodatages lorsqu'un "redémarrage" ou un "redémarrage" est effectué. Et pas quand un arrêt et un démarrage sont faits. Après l’arrêt et le démarrage, le «dernier démarrage» reflétera le temps réellement «redémarré» du système et non le temps de démarrage réel. Ainsi, shutdown/start donne le même résultat que de revenir de suspend/hybernnate pour l'horodatage LastBootUpTime.

1
Florisz

A partir d'une question ServerFault similaire , recherchez/filtrez le journal des événements système Windows pour l'ID d'événement 6009.

Sous Windows 10: Event Viewer > Windows Logs > System puis l'action Filter Current Log....

1
palswim

Quelques réponses mentionnentnet statistics workstationet j'ai noté que les deux:

net statistics server

et

net statistics workstation

devrait fournir des données concernant le dernier démarrage sur la ligne Statistics since ....

Cependant, certaines versions de système d'exploitation (telles que Svr2008/6.0) renverront 1/1/1980 12:00 pour la date d'utilisation de server. Je vais donc par défaut à workstation.

Vous pouvez aussi abréger une partie de la commande telle que net stats workstation et obtenir les mêmes résultats. Enfin, si vous passez d’un système à l’autre, la zone CMD par défaut n’est pas assez grande pour afficher tous les résultats de la commande. Je vais donc diriger la sortie versmorepour éviter de faire défiler l'écran pour voir l'heure du démarrage. Par conséquent, ma commande par défaut est:

net stats workstation | more

 command

0
ictm

Vous pouvez utiliser PowerShell pour cela.

Fermer


Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }

Cela vous donnera une liste des heures d'arrêt enregistrées.

Commande alternative, mieux optimisée pour les connexions à distance:

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

Exemple de sortie:

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

Commencez


La commande suivante vous donnera une liste des heures de démarrage enregistrées.

Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}

Commande alternative, mieux optimisée pour les connexions à distance:

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

Exemple de sortie:

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

J'ai testé cela sur PowerShell 5.1 et Windows 10.0.15063. Mais cela devrait également fonctionner sous Windows 7, à condition que vous disposiez au moins de PowerShell 3.0. Notez que vous devez l'exécuter en tant qu'administrateur.

Vous trouverez la documentation complète de la commande ici: docs.Microsoft.com

0
Samir

Même réponse que 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%

... mais dans 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%

Cette implémentation wmi peut sembler un peu compliquée, mais elle est très rapide comparée à d’autres implémentations powershell ou systeminfo et vous pouvez facilement changer le format car il est explicite dans le code.

Merci Max.

0
Loïc