Question
Comparer la date d'un fichier à l'heure systeme
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 25
- Remerciements reçus 0
Je souhaiterais récupérer la date de modification d'un fichier et le comparer à l'heure systeme et si ce delta dépasse une heure envoyer une alerte mail.
POur la partie email pas de soucis ma problématique c'est d'arriver à faire la comparaison.
voici ce que j'ai pu récupérer pour avoir la date du des fichiers...
$date = Get-ChildItem -recurse -path $path | select lastwritetime | where {$_.lastwritetime -gt $datemodified}
que je compare a la date systeme format compréssé ppour le meme format:
Get-Date -Format g
Maintenant comment faire la comparaison et dire si > 1h00 alors alerte.
Merci pour toutes aides.
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
Maintenant comment faire la comparaison et dire si > 1h00 alors alerte.
La solution doit se trouver dans New-TimeSpan.
[code:1]Get-Help New-TimeSpan -Full[/code:1]
Il faudra comparer le résultat de New-TimeSpan avec 1H via l'opérateur de comparaison \"-gt\".
Cela doit ressembler à ça :
[code:1]
(New-TimeSpan -Start ($_.lastwritetime) -End $datemodified).Hours -gt 1[/code:1]
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 22/06/12 18:23
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
[code:1]$date = Get-ChildItem -recurse -path $path | select lastwritetime | where {$_.lastwritetime -gt $datemodified}[/code:1]
Tu as nommé ta variable $date mais tu devrais récupérer, via Get-ChildItem des fichiers ou des répertoires (objets de type System.IO.FileInfo et System.IO.DirectoryInfo).
A tester :
[code:1]$Files = Get-ChildItem -recurse -path $path | Where-Object {(New-TimeSpan -Start ($_.lastwritetime) -End $datemodified).Hours -gt 1}[/code:1]
$Files contiendra ainsi la liste des fichiers concernés ...<br><br>Message édité par: Matthew BETTON, à: 22/06/12 18:32
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
que je compare a la date systeme format compréssé ppour le meme format:
Get-Date -Format g
La propriété LastWriteTime est un objet du type System.DateTime.
Le Cmdlet New-TimeSpan attend quand à lui ce même type d'objet ( <datetime> ) .
Pour pouvoir la comparer avec la date système, n'utilise pas le format compressé, comme tu l'indiquais, mais plutôt un simple Get-Date.
[code:1]Get-Date -Format g[/code:1]
renvoie un System.String et non pas un System.DateTime<br><br>Message édité par: Matthew BETTON, à: 22/06/12 23:20
Connexion ou Créer un compte pour participer à la conversation.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 25
- Remerciements reçus 0
De mon côte je me suis trompé avec:
$date = Get-ChildItem -recurse -path $path | select lastwritetime | where {$_.lastwritetime -gt $datemodified}
car la résultante est un sting qui n'est pas possible comparer avec la fonction get_date.
Je me suis retourné vers ceci:
dir $path -recurse | where { $_.lastWriteTime -gt (Get-Date).Addhours(-1) } | fname1
par cette instruction j’espérais lancer la fonction fname si la lastwritetime est superieur à 1.
mais volai quoi que l'on mette en valeur apres addhours la fonction se lance.
et il semble que $_.lastWriteTime reste vide expliquant mon resultat.
merci pour votre aide.
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
Peux-tu poster ici le code de cette fonction ?
Via cette ligne :
[code:1]
dir $path -recurse | where { $_.lastWriteTime -gt (Get-Date).Addhours(-1) }[/code:1]
Tu récupères les fichiers dont la date de dernière modification est supérieure à (la date d'aujourd'hui moins une heure). Effectivement, tu devrais récupérer les fichiers qui ont été modifiés il y a moins d'une heure.
Si aucun fichier n'a été modifié il y a moins d'une heure, ce code ne renverra rien.
et il semble que $_.lastWriteTime reste vide expliquant mon resultat.
?
Peux tu me dire ce que tu récupères via l'exécution de :
[code:1]Get-ChildItem $path -recurse | Select-Object FullName, lastWritetime[/code:1]
?
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Comparer la date d'un fichier à l'heure systeme