PowerShell | Vérifier les fichiers modifiés pendant une période
Rédigé par O. Clotaire
Aucun commentaire
Classé dans : PowerShell
Avant une restauration de fichiers dans un répertoire, nous pouvons vérifier si des fichiers ont été modifiés à partir d'une date précise, grâce à PowerShell. Cela permettra d'affiner cette restauration de documents.
Avec l'instruction Get-ChildItem qui remonte les fichiers, on s'aperçoit qu'il y a une colonne LastWriteTime. Elle informe de la date et l'heure de dernière modification.
La CommandLet Get-Date nous informe sur la date actuelle que l'on utilisera avec la méthode AddHours.
Pour connaitre l'heure qu'il fera dans 1 heure :
(Get-Date).AddHours(1)
Pour connaitre la date du lendemain :
(Get-Date).AddDays(1)
Pour connaitre la date d'un jour et une heure avant l'heure actuel :
((Get-Date).AddDays(-1)).Addhours(-1)
Pour remonter les informations de certains types de fichiers :
Get-ChildItem -path C:\Users\MyName -recurse -Include *.pdf, *.xlsx
Exemple d’interprétation remontant les fichiers modifiés pendant les dernières 24 heures :
J'ajoute une variable pour le total des heures $HTT.
$HTT = -24
Get-ChildItem -path C:\Users\MyName\Downloads -recurse | Where-Object {$_.LastWriteTime -gt (Get-Date).Addhours($HTT)}| Out-File C:\Temp\modifiés.txt
Résultat de l’interprétation :
Répertoire : C:\Users\MyName\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 02/04/2020 19:28 pluxml
-a---- 08/04/2020 22:10 8435 kzInstall.php
Calculer le nombre une période de plusieurs heures ou plusieurs jours à chaque fois me rebute... Ça fait combien d'heures 15 jours et 12 heures, en heures ?
J'ai donc chercher à faire un script qui me permet de préciser la date à partir de laquelle je veux effectuer ma vérification de fichiers modifiés.
##################################################################
# Script permettant de rechercher les fichiers modifiés
# dans les répertoires récursifs à partir d'une date précise.
# # A Modifier en fonction de votre besoin (en rouge ):
# - $FixDate
# - $RepView
# - $Log # - $InfoStart
# - $InfoEnd
#################################################################
# Date $GD = Get-Date
$FixDate = Get-Date -Year2020 -Month 04 -Day 07 -Hour 09 -Minute 35
# Répertoire
$RepView = "C:\Users\MyName\Downloads"
# Journal d'audit
$Log = "C:\Temp\test.txt"
# Recherche de modification
$FilerList = Get-ChildItem -path $RepView -recurse | Where-Object {$_.LastWriteTime -gt $FixDate}
# Compteur de fichiers modifiés
$FilerCount = $FilerList.Count
# Messages
$InfoStart = "Fichiers et/ou dossiers modifiés depuis le $FixDate : Total de $FilerCount"
$InfoEnd = "Fin de vérification de $RepView le : $GD"
# Ecriture du journal
$FilerList | Out-File $Log
# Ajoute une information à la fin du log
Add-Content -Path "$Log" -Value $InfoEnd
# Cherche les informations du contenu du log
$GetContentLog = Get-Content -Path $Log
# Enregistre l'information pour la 1 ère ligne du log
$GetContentLog[0] = "{0}`r`n{1}" -f $InfoStart, $GetContentLog[0]
# Réécrire le log avec toute les informations dans l'ordre
$GetContentLog | Set-Content $Log
# Voir les informations du log dans le prompt
Write-Host $Content
A chaque exécution, le journal sera entièrement modifié.