Flash info

Les vrais admins utilisent la ligne de commande... (dixit le mag Windows IT Pro du 6/02/07) Avis aux amateurs pour affirmer leur virilité Surprised.
La suite est ici.

 
Accueil arrow Articles / Tutoriaux arrow Conversion de dates au format WMI
Conversion de dates au format WMI
Appréciation des utilisateurs: / 6
FaibleMeilleur 
Écrit par Arnaud Petitjean [MVP]   
29-05-2009
20090506201950.000000+120 

Peut-être avez-vous déjà remarqué que le format de date utilisé par WMI diffère pas mal de celui de PowerShell ? Dans ce petit tuto je vais vous montrer comment convertir une date au format WMI en type [datetime] et vice-versa... 

Je me suis pas mal de fois confronté à ce "problème" lors de requêtes WMI qui retournent une date, mais aujourd'hui je me suis décidé à regarder d'un peu plus près comment je peux convertir ces dates.

Le format de dates employé par WMI est le format DMTF; il s'agit bien entendu - tout comme l'est WMI - d'un format normalisé. Celui-ci est décrit dans la documentation du Kit de développement WMI SDK.

Prenons ce petit exemple (qui peut être utile au passage) pour connaître la date d'installation de son système :

PS > (Get-WmiObject -class Cim_OperatingSystem).installdate

20090506201950.000000+120 

Le résultat est une date relativement facile à interpréter. Nous pourrions aisément la découper en petit bouts et reformer une date dans un format comprehensible par PowerShell.

Ceci étant j'ai trouvé une façon de faire beaucoup plus simple, que je vais m'empresser de partager avec vous : il existe une classe dans le Framework .Net (décidément on trouve tout là dedans !) qui comprend la méthode ToDateTime et qui va grandement nous simplifier la vie. Il s'agit de la classe System.Management.ManagementDateTimeConverter. Pour plus d'information sur cette classe, veuillez consulter sa documentation sur MSDN en cliquant ici.

A présent essayez ce petit morceau de code :

PS > $DateInstallation = (Get-WmiObject -class Cim_OperatingSystem).installdate
PS > [System.Management.ManagementDateTimeConverter]::ToDateTime($DateInstallation)

mercredi 6 mai 2009 20:19:50

Cela correspond bien à la date où j'ai installé mon système sous Windows 7 RC 1.

Maintenant imaginons que nous ayons envie de faire l'opération inverse, c'est à dire convertir une date au format DateTime en date DMTF, comment faire ? Et bien cette classe magique a également une méthode pour cela. Il s'agit de la méthode ToDmtfDateTime.

Exemple, pour convertir la date et l'heure actuelle :

PS > $DateHeureCourante = Get-Date
PS > [System.Management.ManagementDateTimeConverter]::ToDmtfDateTime($DateHeureCourante)

20090529003639.865860+120

Et voilà, maintenant vous savez tout !

 
© 2017 PowerShell-Scripting.com