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
.
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:
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):
(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.
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.
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.
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
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)
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
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
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.
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...
.
Quelques réponses mentionnentnet statistics workstation
et 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 versmore
pour é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
Vous pouvez utiliser PowerShell pour cela.
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
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
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.