diff --git a/lib/plugins/Invoke-IcingaCheckDirectory.psm1 b/lib/plugins/Invoke-IcingaCheckDirectory.psm1 index 4223eea..76d1092 100644 --- a/lib/plugins/Invoke-IcingaCheckDirectory.psm1 +++ b/lib/plugins/Invoke-IcingaCheckDirectory.psm1 @@ -66,13 +66,16 @@ function Invoke-IcingaCheckDirectory() $Warning = $null, [string]$YoungerThan, [string]$OlderThan, + [string]$FileSizeGreaterThan, + [string]$FileSizeSmallerThan, [ValidateSet(0, 1, 2, 3)] [int]$Verbosity = 0, [switch]$NoPerfData ); $DirectoryData = Get-IcingaDirectoryAll -Path $Path -FileNames $FileNames ` - -Recurse $Recurse -YoungerThan $YoungerThan -OlderThan $OlderThan; + -Recurse $Recurse -YoungerThan $YoungerThan -OlderThan $OlderThan ` + -FileSizeGreaterThan $FileSizeGreaterThan -FileSizeSmallerThan $FileSizeSmallerThan; $DirectoryCheck = New-IcingaCheck -Name 'File Count' -Value $DirectoryData.Count; $DirectoryCheck.WarnOutOfRange( diff --git a/lib/provider/directory/Icinga_Provider_Directory.psm1 b/lib/provider/directory/Icinga_Provider_Directory.psm1 index b9994ca..3332b56 100644 --- a/lib/provider/directory/Icinga_Provider_Directory.psm1 +++ b/lib/provider/directory/Icinga_Provider_Directory.psm1 @@ -7,7 +7,9 @@ function Get-IcingaDirectoryAll() [array]$FileNames, [bool]$Recurse, [string]$YoungerThan, - [string]$OlderThan + [string]$OlderThan, + [string]$FileSizeGreaterThan, + [string]$FileSizeSmallerThan ); if ($Recurse -eq $TRUE) { @@ -17,16 +19,26 @@ function Get-IcingaDirectoryAll() } if ([string]::IsNullOrEmpty($OlderThan) -eq $FALSE -And [string]::IsNullOrEmpty($YoungerThan) -eq $FALSE) { - $OlderThan = Set-NumericNegative (ConvertTo-Seconds $OlderThan); - $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -lt (Get-Date).AddSeconds($OlderThan)}) - $YoungerThan = Set-NumericNegative (ConvertTo-Seconds $YoungerThan); - $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -gt (Get-Date).AddSeconds($YoungerThan)}) + $OlderThan = Set-NumericNegative (ConvertTo-Seconds $OlderThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -lt (Get-Date).AddSeconds($OlderThan)}) + $YoungerThan = Set-NumericNegative (ConvertTo-Seconds $YoungerThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -gt (Get-Date).AddSeconds($YoungerThan)}) } elseif ([string]::IsNullOrEmpty($OlderThan) -eq $FALSE) { - $OlderThan = Set-NumericNegative (ConvertTo-Seconds $OlderThan); - $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -lt (Get-Date).AddSeconds($OlderThan)}) + $OlderThan = Set-NumericNegative (ConvertTo-Seconds $OlderThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -lt (Get-Date).AddSeconds($OlderThan)}) } elseif ([string]::IsNullOrEmpty($YoungerThan) -eq $FALSE) { - $YoungerThan = Set-NumericNegative (ConvertTo-Seconds $YoungerThan); - $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -gt ((Get-Date).AddSeconds($YoungerThan))}) + $YoungerThan = Set-NumericNegative (ConvertTo-Seconds $YoungerThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -gt ((Get-Date).AddSeconds($YoungerThan))}) + } + + if ([string]::IsNullOrEmpty($FileSizeGreaterThan) -eq $FALSE) { + $FileSizeGreaterThanValue = (Convert-Bytes $FileSizeGreaterThan -Unit B).value + $DirectoryData = ($DirectoryData | Where-Object {$_.Length -gt $FileSizeGreaterThanValue}) + } + + if ([string]::IsNullOrEmpty($FileSizeSmallerThan) -eq $FALSE) { + $FileSizeSmallerThanValue = (Convert-Bytes $FileSizeSmallerThan -Unit B).value + $DirectoryData = ($DirectoryData | Where-Object {$_.Length -gt $FileSizeSmallerThanValue}) } return $DirectoryData;