Ceci est une ancienne révision du document !
Gestion des dates en Powershell
La gestion des dates peut s'avérer crucial. On en a besoin pour dater un fichier, dater des logs, supprimer des anciens fichiers, etc… La commande de gestion de date sous Powershell est Get-Date.
Cette commande renvoie la date actuelle donnée par l'horloge interne de la machine et formatée pour être compréhensible par l'utilisateur.
Formatage
Le formatage peut être modifié avec le paramètre -Format suivi d'un ou plusieurs arguments indiquant le type de formatage.
Ainsi avec :
Get-Date vendredi 1 février 2019 14:05:09
On obtient :
| Argument | Explication | Exemple |
|---|---|---|
d | Affiche le jour du mois sur un ou deux chiffres de 1 à 31 | Get-Date -Format 'd' 1 |
dd | Affiche le jour du mois sur deux chiffres de 01 à 31 | Get-Date -Format 'dd' 01 |
ddd | Affiche le jour de la semaine en abréviation | Get-Date -Format 'ddd' ven. |
dddd | Affiche le jour de la semaine en complet | Get-Date -Format 'dddd' vendredi |
M | Affiche le mois sur un ou deux chiffres de 1 à 12 | Get-Date -Format 'M' 2 |
MM | Affiche le mois sur deux chiffres de 01 à 12 | Get-Date -Format 'MM' 02 |
MMM | Affiche le nom du mois en abréviation | Get-Date -Format 'MMM' fév. |
MMMM | Affiche le nom du mois en complet | Get-Date -Format 'MMMM' février |
yy | Affiche l'année deux chiffres | Get-Date -Format 'yy' 19 |
yyyy | Affiche l'année sur quatre chiffres | Get-Date -Format 'yyyy' 2019 |
h | Affiche l'heure de 1 à 12 | Get-Date -Format 'h' 2 |
hh | Affiche l'heure de 01 à 12 | Get-Date -Format 'hh' 02 |
H | Affiche l'heure de 1 à 24 | Get-Date -Format 'H' 2 |
HH | Affiche l'heure de 01 à 24 | Get-Date -Format 'HH' 02 |
m | Affiche les minutes de 0 à 59 | Get-Date -Format 'm' 5 |
mm | Affiche les minutes de 00 à 59 | Get-Date -Format 'mm' 05 |
s | Affiche les secondes de 0 à 59 | Get-Date -Format 's' 9 |
ss | Affiche les secondes de 00 à 59 | Get-Date -Format 'ss' 09 |
t | Affiche l'heure et les minutes | Get-Date -Format 't' 14:05 |
z | Affiche le fuseau horaire | Get-Date -Format 'z' +1 |
zz | Affiche le fuseau horaire sur deux chiffres | Get-Date -Format 'zz' +01 |
zzz | Affiche le fuseau horaire avec l'intégralité du décalage | Get-Date -Format 'zzz' +01:00 |
D | Affiche la journée complète | Get-Date -Format 'D' vendredi 1 février 2019 |
G | Affiche la journée complète au format numérique suivi de l'heure. Pratique pour les logs. | Get-Date -Format 'G' 01/02/2019 14:05:09 |
On peut aussi renvoyer un formatage UNIX grâce au paramètre -UFormat. Ainsi pour la date vendredi 1 février 2019 14:05:09, le retour de la commande Get-Date -UFormat $Args sera :
| Argument | Explication | Retour |
|---|---|---|
%c | Date et heure en abréviation et américanisée | Get-Date -UFormat "%c" ven. févr. 1 14:05:09 2019 |
%D | Date au format mm/dd/yy | Get-Date -UFormat "%D" 02/01/19 |
%x | Comme %D mais en utilisant les préférences culturelles | Get-Date -UFormat "%x" 01/02/19 |
%C | Affiche le siècle -1 | Get-Date -UFormat "%C" 20 |
%Y ou %G | Affiche l'année complète | Get-Date -UFormat "%Y" 02019 |
%y ou %g | Affiche l'année sur deux chiffres | Get-Date -UFormat "%y" 19 |
%b ou %h | Affiche le mois en abréviation | Get-Date -UFormat "%b" févr. |
%B | Affiche le mois en lettres | Get-Date -UFormat "%B" février |
%m | Affiche le mois en chiffres | Get-Date -UFormat "%m" 02 |
%W ou %U | Affiche le numéro de la semaine de 0 à 52 | Get-Date -UFormat "%W" 4 |
%V | Affiche le numéro de la semaine de 1 à 53 | Get-Date -UFormat "%V" 5 |
%a | Affiche le jour de la semaine en abréviation | Get-Date -UFormat "%a" ven. |
%A | Affiche le jour de la semaine en lettres | Get-Date -UFormat "%A" vendredi |
%u ou %w | Affiche le numéro de jour dans la semaine. La semaine commence le lundi. | Get-Date -UFormat "%u" 5 |
%d | Affiche le numéro du jour dans le mois de 01 à 31 | Get-Date -UFormat "%d" 01 |
%e | Affiche le numéro du jour dans le mois de 1 à 31. Les jours de 1 à 9 seront précédés d'un espace. | Get-Date -UFormat "%e" 1 |
%j | Affiche le numéro du jour dans l'année de 1 à 366 | Get-Date -UFormat "%j" 32 |
%p | Affiche la demi-journée (AM ou PM) si la préférence culturelle l'indique sinon n'affiche rien. | Get-Date -UFormat "%p" PM |
%T | Affiche l'heure complète sur 24h | Get-Date -UFormat "%T" 14:05:09 |
%R | Affiche l'heure sans les secondes sur 24h | Get-Date -UFormat "%R" 14:05 |
%r | Affiche l'heure complète sur 12h si la préférence culturelle l'utilise sinon équivalent à %T | Get-Date -UFormat "%r" 02:05:09 PM |
%Z | Affiche le décalage horaire par rapport à l'UTC | Get-Date -UFormat "%Z" +01 |
%H ou %k | Affiche l'heure uniquement sur 24h | Get-Date -UFormat "%H" 14 |
%I ou %l | Affiche l'heure uniquement sur 12h | Get-Date -UFormat "%I" 02 |
%M | Affiche les minutes | Get-Date -UFormat "%M" 05 |
%S | Affiche les secondes | Get-Date -UFormat "%T" 09 |
Évidemment, les arguments de -Format ou de -UFormat peuvent être ajoutés les uns aux autres mais -Format et -UFormat ne doivent pas être mélangés. Par exemple :
Get-Date vendredi 1 février 2019 14:05:09 Get-Date -Format 'hh:mm:ss dd/MM/yy' 14:05:09 01/02/19 Get-Date -UFormat "%d-%m-%Y %R" 01-02-19 14:05
Les propriétés
Get-Date embarque un certains nombres de propriétés. Ces derniers permettent d'obtenir un élément isolé de la date. Il s'agit d'une alternative au formatage.
Ainsi avec :
Get-Date vendredi 1 février 2019 14:05:09
On obtient :
| Propiété | Explication | Exemple |
|---|---|---|
.Date | Renvoie la date à minuit | (Get-Date).Date vendredi 1 février 2019 00:00:00 |
.Day | Renvoie le jour du mois | (Get-Date).Day 1 |
.DayOfWeek | Renvoie le jour de la semaine (en anglais) | (Get-Date).DayOfWeek Friday |
.DayOfYear | Renvoie le jour de l'année | (Get-Date).DayOfYear 32 |
.Hour | Renvoie l'heure | (Get-Date).Hour 14 |
.Kind | Renvoie une information sur la référence de l'heure. Cette référence peut être ToLocalTime si l'heure est présentée sur en fonction de l'heure locale ou ToUniversalTime si l'heure est présentée en fonction du fuseau UTC. Par défaut et quand aucune indication n'est spécifiée, la propriété renvoie Unspecified | (Get-Date).Kind Unspecified |
.Millisecond | Renvoie les millisecondes | (Get-Date).Millisecond 0 |
.Minute | Renvoie les minutes | (Get-Date).Minute 5 |
.Month | Renvoie le mois en chiffre | (Get-Date).Month 2 |
.Second | Renvoie les secondes | (Get-Date).Second 9 |
.Ticks | Renvoie l'heure complète au format de l'horloge système, soit le nomble d'impulsion de la pile. | (Get-Date).Ticks 636846267090000000 |
.TimeOfDay | Renvoie un tableau contenant la différence de temps entre une date et une autre. Si la propriété n'est extraire que d'une seule date, la référence sera la même date à minuit (soit (Get-Date).Date). Les éléments du tableau sont les jours, les heures, les minutes, les secondes, les millisecondes, l'horloge système (Ticks), la différence totale en jours, en heure, en minutes, en seconde et en millisecondes. | (Get-Date).TimeOfDay Days : 0 Hours : 14 Minutes : 5 Seconds : 9 Milliseconds : 0 Ticks : 507090000000 TotalDays : 0.586909722222222 TotalHours : 14.0858333333333 TotalMinutes : 845.15 TotalSeconds : 50709 TotalMilliseconds : 50709000 |
.Year | Renvoie l'année | (Get-Date).Year 2019 |
.DisplayHint | Indique si le résultat est une date seule (Date), une heure (Time) ou un ensemble date et heure (DateTime) | (Get-Date).DisplayHint DateTime |
.DateTime | Renvoie la date au format DateTime, soit la date suivie de l'heure | (Get-Date).DateTime vendredi 1 février 2019 14:05:09 |

Discussion