Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. PowerShell Core et Windows PowerShell
  3. Gestion des fichiers et des dates
Extrait - PowerShell Core et Windows PowerShell Les fondamentaux du langage (2e édition)
Extraits du livre
PowerShell Core et Windows PowerShell Les fondamentaux du langage (2e édition)
7 avis
Revenir à la page d'achat du livre

Gestion des fichiers et des dates

La gestion de fichiers

La gestion des fichiers est très simple avec PowerShell, contrairement à VBScript, pour ceux qui ont eu l’occasion de le pratiquer. En effet, il n’est plus question d’instancier des objets COM de type filesystem, de les ouvrir en spécifiant un mode d’accès (lecture ou écriture), puis de les fermer. PowerShell apporte un jeu de commandelettes dédié à la gestion de fichiers et nous verrons que cela représente un énorme gain de productivité dans l’écriture des scripts.

Cela étant, il y a un point particulier sur lequel il est important d’être vigilant et de savoir ce que l’on fait si l’on veut s’éviter bien des problèmes. Il s’agit du format d’encodage des fichiers texte. Ils sont nombreux et il ne faut pas se tromper ; nous détaillerons donc ce point dans ce présent chapitre.

Dans le chapitre À la découverte de PowerShell, nous nous étions intéressés au contenant, c’est-à-dire au fichier lui-même, et nous avions vu comment les créer, les déplacer, les renommer, etc. À présent, intéressons-nous au contenu, et voyons entre autres comment le générer et comment le relire.

1. Formats d’encodage des fichiers texte

Avant d’entrer dans le vif du sujet, il nous paraît nécessaire de prendre quelques minutes pour faire le point sur ce vaste et important sujet qu’est l’encodage des fichiers texte.

Sans entrer dans les détails de la préhistoire de l’informatique, commençons avec le standard ASCII, bien connu de tous. Celui-ci, apparu avec les premiers ordinateurs à la fin des années 60 aux États-Unis, encode les caractères sur 7 bits (de la position 0 à 127), soit un total de 128 caractères que l’on a regroupés dans une table qui fut devenue célèbre, c’est la fameuse table ASCII. Le souci de cette norme, pour nous Français (mais pas seulement), c’est qu’elle ne contient pas nos chers caractères accentués… Ce qui est logique puisque l’ASCII a été inventé par un organisme américain pour les Américains.

L’ASCII étendu (ANSI)...

Dates

Avec PowerShell, l’obtention d’un objet représentant la date et l’heure courante se fait avec la commande Get-Date. Bien qu’un simple Get-Date dans la console retourne l’heure et la date actuelles, cette date peut se décliner en bon nombre de formats. 

Une variable contenant une date est de type DateTime. Pour le vérifier par vous-même, tapez la commande suivante :


PS > (Get-Date).GetType() 
 
IsPublic IsSerial Name            BaseType 
-------- -------- ----            -------- 
True     True     DateTime        System.ValueType
 

Les objets de type DateTime possèdent de nombreuses propriétés et méthodes intéressantes comme, entre autres, la méthode IsDaylightSavingTime, qui indique si l’heure actuelle est ajustée pour l’heure d’été ou l’heure d’hiver.

Pour se rendre compte des possibilités d’actions sur les dates, le mieux est encore de faire appel à Get-Member sur l’objet retourné par Get-Date :


PS > Get-Date | Get-Member
 

Lorsque l’on parle de date ou de temps, il est nécessaire de définir ce que l’on appelle une unité de temps. Et l’unité la plus basse qui soit dans le système est appelée un « tick ». Un tick est une unité de mesure du temps. Elle correspond à un battement de cœur de l’ordinateur, c’est-à-dire à une période du Timer (le Timer est le composant électronique qui gère le temps). Cette valeur vaut actuellement dix millionièmes de secondes.

Pour connaître le nombre de ticks présents en une seconde, tapez la commande suivante : $((Get-Date).ticks) - $((Get-Date).Addseconds(-1).ticks)

Soit à peu près 10 millions moyennant le temps de traitement de la commande.

1. Manipulation des objets DateTime

La commandelette Get-Member appliquée à un objet de type DateTime retourne une liste considérable de méthodes et de propriétés. Le tableau suivant reprend les méthodes les plus couramment utilisées et en donne une brève description.

Méthode

Description

Add

AddDays

AddHours

AddMilliseconds

AddMinutes...