diff --git a/lib/provider/directory/Icinga_Provider_Directory.psm1 b/lib/provider/directory/Icinga_Provider_Directory.psm1 index 3332b56..f33af95 100644 --- a/lib/provider/directory/Icinga_Provider_Directory.psm1 +++ b/lib/provider/directory/Icinga_Provider_Directory.psm1 @@ -6,44 +6,58 @@ function Get-IcingaDirectoryAll() [string]$Path, [array]$FileNames, [bool]$Recurse, - [string]$YoungerThan, - [string]$OlderThan, + [string]$ChangeTimeEqual, + [string]$ChangeYoungerThan, + [string]$ChangeOlderThan, + [string]$CreationTimeEqual, + [string]$CreationOlderThan, + [string]$CreationYoungerThan, [string]$FileSizeGreaterThan, [string]$FileSizeSmallerThan ); if ($Recurse -eq $TRUE) { - $DirectoryData = Get-ChildItem -Recurse -Path $Path -Include $FileNames; + $DirectoryData = Get-IcingaDirectoryRecurse -Path $Path -FileNames $FileNames; } else { - $DirectoryData = Get-ChildItem -Path $Path -Include $FileNames; - } - - 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)}) - } elseif ([string]::IsNullOrEmpty($OlderThan) -eq $FALSE) { - $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))}) + $DirectoryData = Get-IcingaDirectory -Path $Path -FileNames $FileNames; } + if ([string]::IsNullOrEmpty($ChangeTimeEqual) -eq $FALSE) { + $DirectoryData = Get-IcingaDirectoryChangeTimeEqual -ChangeTimeEqual $ChangeTimeEqual -DirectoryData $DirectoryData; + } + + if ([string]::IsNullOrEmpty($CreationTimeEqual) -eq $FALSE) { + $DirectoryData = Get-IcingaDirectoryCreationTimeEqual -CreationTimeEqual $CreationTimeEqual -DirectoryData $DirectoryData; + } + + If ([string]::IsNullOrEmpty($ChangeTimeEqual) -eq $TRUE -Or [string]::IsNullOrEmpty($CreationTimeEqual) -eq $TRUE) { + if ([string]::IsNullOrEmpty($ChangeOlderThan) -eq $FALSE) { + $DirectoryData = Get-IcingaDirectoryChangeOlderThan -ChangeOlderThan $ChangeOlderThan -DirectoryData $DirectoryData; + } + if ([string]::IsNullOrEmpty($ChangeYoungerThan) -eq $FALSE) { + $DirectoryData = Get-IcingaDirectoryChangeYoungerThan -ChangeYoungerThan $ChangeYoungerThan -DirectoryData $DirectoryData; + } + if ([string]::IsNullOrEmpty($CreationOlderThan) -eq $FALSE) { + $DirectoryData = Get-IcingaDirectoryCreationOlderThan -CreationOlderThan $CreationOlderThan -DirectoryData $DirectoryData; + } + if ([string]::IsNullOrEmpty($CreationYoungerThan) -eq $FALSE) { + $DirectoryData = Get-IcingaDirectoryCreationYoungerThan -CreationYoungerThan $CreationYoungerThan -DirectoryData $DirectoryData; + } + } if ([string]::IsNullOrEmpty($FileSizeGreaterThan) -eq $FALSE) { - $FileSizeGreaterThanValue = (Convert-Bytes $FileSizeGreaterThan -Unit B).value - $DirectoryData = ($DirectoryData | Where-Object {$_.Length -gt $FileSizeGreaterThanValue}) + $DirectoryData = (Get-IcingaDirectorySizeGreaterThan -FileSizeGreaterThan $FileSizeGreaterThan -DirectoryData $DirectoryData); } - if ([string]::IsNullOrEmpty($FileSizeSmallerThan) -eq $FALSE) { - $FileSizeSmallerThanValue = (Convert-Bytes $FileSizeSmallerThan -Unit B).value - $DirectoryData = ($DirectoryData | Where-Object {$_.Length -gt $FileSizeSmallerThanValue}) + $DirectoryData = (Get-IcingaDirectorySizeSmallerThan -FileSizeSmallerThan $FileSizeSmallerThan -DirectoryData $DirectoryData); } return $DirectoryData; } + + +# RECURSE + function Get-IcingaDirectory() { param( @@ -65,5 +79,109 @@ function Get-IcingaDirectoryRecurse() $DirectoryData = Get-ChildItem -Recurse -Include $FileNames -Path $Path; + return $DirectoryData; +} + +# FILE SIZE + +function Get-IcingaDirectorySizeGreaterThan() +{ + param( + [string]$FileSizeGreaterThan, + $DirectoryData + ); + $FileSizeGreaterThanValue = (Convert-Bytes $FileSizeGreaterThan -Unit B).value + $DirectoryData = ($DirectoryData | Where-Object {$_.Length -gt $FileSizeGreaterThanValue}) + + return $DirectoryData; +} + +function Get-IcingaDirectorySizeSmallerThan() +{ + param( + [string]$FileSizeSmallerThan, + $DirectoryData + ); + $FileSizeSmallerThanValue = (Convert-Bytes $FileSizeSmallerThan -Unit B).value + $DirectoryData = ($DirectoryData | Where-Object {$_.Length -gt $FileSizeSmallerThanValue}) + + return $DirectoryData; +} + +# TIME BASED CHANGE + +function Get-IcingaDirectoryChangeOlderThan() +{ + param ( + [string]$ChangeOlderThan, + $DirectoryData + ) + $ChangeOlderThan = Set-NumericNegative (ConvertTo-Seconds $ChangeOlderThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -lt (Get-Date).AddSeconds($ChangeOlderThan)}) + + return $DirectoryData; +} + +function Get-IcingaDirectoryChangeYoungerThan() +{ + param ( + [string]$ChangeYoungerThan, + $DirectoryData + ) + $ChangeYoungerThan = Set-NumericNegative (ConvertTo-Seconds $ChangeYoungerThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime -gt (Get-Date).AddSeconds($ChangeYoungerThan)}) + + return $DirectoryData; +} + +function Get-IcingaDirectoryChangeTimeEqual() +{ + param ( + [string]$ChangeTimeEqual, + $DirectoryData + ) + $ChangeTimeEqual = Set-NumericNegative (ConvertTo-Seconds $ChangeTimeEqual); + $ChangeTimeEqual = (Get-Date).AddSeconds($ChangeTimeEqual); + $DirectoryData = ($DirectoryData | Where-Object {$_.LastWriteTime.Day -eq $ChangeTimeEqual.Day -And $_.LastWriteTime.Month -eq $ChangeTimeEqual.Month -And $_.LastWriteTime.Year -eq $ChangeTimeEqual.Year}) + + return $DirectoryData; +} + +# TIME BASED CREATION + +function Get-IcingaDirectoryCreationYoungerThan() +{ + param ( + [string]$CreationYoungerThan, + $DirectoryData + ) + $CreationYoungerThan = Set-NumericNegative (ConvertTo-Seconds $CreationYoungerThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.CreationTime -gt (Get-Date).AddSeconds($CreationYoungerThan)}) + + return $DirectoryData; +} + +function Get-IcingaDirectoryCreationOlderThan() +{ + param ( + [string]$CreationOlderThan, + $DirectoryData + ) + $CreationOlderThan = Set-NumericNegative (ConvertTo-Seconds $CreationOlderThan); + $DirectoryData = ($DirectoryData | Where-Object {$_.CreationTime -lt (Get-Date).AddSeconds($CreationOlderThan)}) + + return $DirectoryData; +} + +function Get-IcingaDirectoryCreationTimeEqual() +{ + param ( + [string]$CreationTimeEqual, + $DirectoryData + ) + $CreationTimeEqual = Set-NumericNegative (ConvertTo-Seconds $CreationTimeEqual); + $CreationTimeEqual = (Get-Date).AddSeconds($CreationTimeEqual); + $DirectoryData = ($DirectoryData | Where-Object {$_.CreationTime.Day -eq $CreationTimeEqual.Day -And $_.CreationTime.Month -eq $CreationTimeEqual.Month -And $_.CreationTime.Year -eq $CreationTimeEqual.Year}) + return $DirectoryData; } \ No newline at end of file