Quand j’écris des scripts PowerShell, j’ai souvent constaté que j’ai besoin de faire référence à la date. Par exemple, j’ai parfois écrit des scripts qui extraient les journaux D’événements Windows à partir d’une date particulière ou des scripts qui archivent les données vieillissantes en fonction de la date de création d’un fichier. Ce ne sont que quelques exemples de la façon dont la date peut avoir besoin d’être référencée dans un script PowerShell., Dans cet article, je veux vous montrer quelques astuces pour travailler avec des dates dans PowerShell.
récupération de la date
Il est simple de faire afficher PowerShell la date actuelle. Pour ce faire, entrez simplement L’applet de commande Get-Date. Si vous devez afficher la date d’une certaine manière, PowerShell offre un certain nombre d’options différentes pour le faire. La méthode la plus simple consiste à utiliser un indice d’affichage. Le paramètre DisplayHint peut être défini sur Date, heure ou DateTime. L’image ci-dessous montre comment fonctionne L’applet de commande Get-Date de base et quelques exemples d’utilisation du paramètre DisplayHint.,
Si vous avez besoin d’un peu plus de contrôle sur la sortie, vous pouvez utiliser le paramètre Format ou le paramètre UFormat. Le paramètre Format est principalement utilisé lorsque vous devez mettre la date dans un certain format dans le but de faire une comparaison. Nous n’utiliserons pas le paramètre Format dans cet article, mais c’est toujours une bonne idée d’être conscient de son existence.
Le paramètre UFormat est plus utilisé à des fins d’affichage. Il vous permet d’organiser les différents éléments qui composent la date et l’heure de votre choix., Tout ce que vous avez à faire est d’ajouter divers caractères de formatage au paramètre UFormat. Les paramètres que vous pouvez utiliser incluent:
%m — mois (en nombre)
%D — Date
%Y — année
%A — le jour de la semaine
%Z — le fuseau horaire, exprimé en décalage par rapport à UTC ou à l’heure zouloue. Par exemple, -5 est L’Heure de l’est aux États-Unis.
Vous pouvez voir un exemple ci-dessous du fonctionnement du paramètre UFormat.
Il y a deux choses qui méritent d’être prises en compte dans l’image ci-dessus. Tout d’abord, vous remarquerez que tout ce qui suit le paramètre UFormat est placé entre guillemets., C’est parce que je ne spécifie pas seulement des caractères de formatage, je peux également utiliser du texte. Dans la figure, j’ai utilisé un mélange de texte et de caractères de mise en forme.
l’autre chose à remarquer est que même si je vis sur la côte Est des États-Unis, qui a normalement un décalage de fuseau horaire de -5, la sortie de la figure ci-dessus montre le décalage comme -4. C’est parce qu’il est l’heure d’été. Mais ne serait-ce pas bien de pouvoir le vérifier? Nous pouvons en fait. Voici comment c’est fait:
$A=Get-Date
A A.,IsDaylightSavingTime ()
comme vous pouvez le voir dans l’image ci-dessous, PowerShell affiche la valeur True, indiquant qu’il s’agit bien de l’heure d’été.
Qu’en est-il du jour de l’année?
Nous pouvons également utiliser PowerShell pour nous dire quel jour de l’année il est. Voici comment cela fonctionne:
$A=Get-Date
A A. DayOfYear
Si vous voulez vraiment rendre les choses intéressantes, vous pouvez spécifier une date pour savoir quel jour de l’année cette date tombe. La date que vous spécifiez peut être passée ou future. Voici un exemple:
Get-Date-année 2018-Mois 8-Daye 22).,DayOfYear
Vous pouvez voir quelques exemples dans l’image ci-dessous.
Faire des comparaisons de date
Comme je l’ai dit précédemment, il est possible d’utiliser PowerShell pour faire des comparaisons de date. Bien que vous puissiez utiliser le paramètre-Format pour placer la date dans un format spécifique avant de la comparer à une autre valeur, cela n’est pas toujours nécessaire. Par exemple, la comparaison des dates d’écriture de fichiers ne nécessite pas l’utilisation d’un formatage spécial.,
supposons un instant que vous souhaitiez comparer la dernière heure d’écriture d’un fichier particulier à une date et une heure de votre choix pour voir si le fichier a été écrit plus récemment que la date spécifiée.
dans une situation comme celle-ci, la première chose que nous devons faire est de mapper notre date cible à une variable. Par souci de démonstration, je mapperai le 2 janvier 2017 (qui est une date aléatoire), à la variable a$. Je vais ensuite mapper un fichier particulier à une variable, que j’appellerai X$. Il sera alors possible de faire des comparaisons entre les deux., Voici donc les commandes que je vais utiliser:
A a = (Get-Date-Year 2017-Month 01-Day 02)
A A
X X = Get-ChildItem Readme.txt
X X. LastWriteTime
X X. LastWriteTime-GT A A
la première ligne de code mappe la variable A A au 2 janvier 2017. La ligne suivante vérifie simplement que la variable contient la date souhaitée. La troisième ligne de code mappe la variable $X à un fichier nommé ReadMe.txt. La quatrième ligne affiche la dernière heure d’écriture du fichier. La dernière ligne de code fait une comparaison entre les deux dates., Cela montrera que le fichier a été écrit plus récemment que le 2 janvier 2017. Sinon, il affichera une valeur de False. La capture d’écran ci-dessous montre cela en action. Vous remarquerez également que j’ai ajouté une autre ligne pour vérifier si la dernière heure d’écriture du fichier est plus ancienne que (-LT) le 2 janvier 2017. Faire deux comparaisons distinctes permet de voir que la comparaison fait vraiment ce qu’elle est censée faire.,
Dates dans PowerShell: plus à apprendre
PowerShell vous permet en fait de faire beaucoup plus en ce qui concerne le formatage et les comparaisons de date que ce dont j’ai parlé dans cet article. Si vous souhaitez en savoir plus sur l’utilisation des dates dans PowerShell, un bon point de départ est la documentation de Microsoft pour L’applet de commande Get-Date.