Auteur de questions
powershell check si fichier date de plus d'1h

Question
-
Bonjour
J'aimerai checker si des fichiers datent de plus d'1h dans un repertoire
J'ai un répertoire
c:\
-> partagesquand un fichier date de moins d'1h => réponse ok
quand un fichier date de plus d'1h => réponse erreur 2
Mais il doit me manquer des choses. J'ai beaucoup cherché sur google mais je n'arrive pas à trouver la syntax exact
Pouvez-vous m'aider ?
Ctrl
seb
$a = Get-ChildItem C:\partages\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddHours(-1)} [CmdletBinding()] param ( [Parameter(Mandatory = $true)][String]$path ) BEGIN { $ErrorActionPreference = "Stop" } PROCESS { try { #echo $path $result = Test-path "$path" } catch { $result = "erreur" } } END { if ($a = (Get-ChildItem C:\partages\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddHours(-1)})) { echo "Test OK" exit 0 } ElseIf ($result -eq 'false') { echo "Partage inaccessible" exit 2 } else { echo "Erreur lors du check" exit 2 } }
- Modifié Seb.LC lundi 13 octobre 2014 15:19
Toutes les réponses
-
Bonjour,
souhaites-tu obtenir un résultat pour chaque fichier ou dés que le premier répond à un des critères ?
Une autre approche basé sur un regroupement :
$Date=(Get-Date).AddHours(-1) $path='C:\temp\*.*' $H=Dir $Path | Where-Object {! $_.PsIsContainer}| Group-Object -Property {$_.LastWriteTime -ge $date} -AsHashTable -AsString $oldOfs,$ofs=$ofs,' , ' if ($H.Contains('False')) { Write-Warning "Fichier de plus d'une heure" "$($H.False)" } if ($H.Contains('True')) { Write-Warning "Fichier de moins d'une heure" "$($H.True)" } $ofs=$oldOfs
Beatus, qui prodest, quibus potest.
-
-
Merci Laurent
Voilà un peu le résultat
Ce script est lancé par un outil de supervision (nagios) toutes les 15 minutes
Quand le scripts retourne un message comme quoi il y a des fichiers de plus d'1h => il les liste et fait un exit 2
cette sortie est interpreté par l'outil de supervision pour remonter l'erreur à traiter
$Date=(Get-Date).AddHours(-1) $path='C:\partages\*.*' $H=Dir $Path | Where-Object {! $_.PsIsContainer}| Group-Object -Property {$_.LastWriteTime -ge $date} -AsHashTable -AsString $oldOfs,$ofs=$ofs,' , ' if ($H.Contains('False')) { Write-Warning "Fichier de plus d'une heure" "$($H.False)" echo "Erreur lors du check" exit 2 } if ($H.Contains('True')) { Write-Warning "Fichier de moins d'une heure" "$($H.True)" echo "Test OK" exit 0 } $ofs=$oldOfs
Ctrl
Seb
- Modifié Seb.LC mardi 14 octobre 2014 09:21