PowerLumber.psm1
#============================================================================================= # ____ _ _ #| _ \ _____ _____ _ __| | _ _ _ __ ___ | |__ ___ _ __ #| |_) / _ \ \ /\ / / _ \ '__| | | | | | '_ ` _ \| '_ \ / _ \ '__| #| __/ (_) \ V V / __/ | | |__| |_| | | | | | | |_) | __/ | #|_| \___/ \_/\_/ \___|_| |_____\__,_|_| |_| |_|_.__/ \___|_| #============================================================================================= function new-Log() { <# .SYNOPSIS Clears logs in a directory older than the specified number of days. .DESCRIPTION Clears logs in a directory older than the specified number of days. .PARAMETER Logfile Please Specify a valid path and file name. .EXAMPLE new-log -logfile c:\temp\new.log .NOTES No Additional information about the function or script. #> param( [cmdletbinding()] [Parameter(Mandatory=$true)] [string]$Logfile ) try { if( !(Split-Path -Path $Logfile -ErrorAction SilentlyContinue)) { write-Log -Message "Creating new Directory." -OutputStyle consoleOnly New-Item (Split-Path -Path $Logfile) -ItemType Directory -Force } write-Log -Message "Creating new file." -OutputStyle consoleOnly New-Item $logfile -type file -force -value "New file created." } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Error:" $ErrorMessage $FailedItem BREAK } } #============================================================================================= function Clear-Logs() { <# .SYNOPSIS Clears logs in a directory older than the specified number of days. .DESCRIPTION Clears logs in a directory older than the specified number of days. .PARAMETER Path Please Specify a valid path. .PARAMETER Daysback Please Specify a number of daysback. .EXAMPLE Clear-Logs -Path "c:\temp" -DaysBack 3 .NOTES No Additional information about the function or script. #> param( [cmdletbinding()] [Parameter(Mandatory=$true)] [ValidateScript({Test-Path $_ })] [string]$Path, [Parameter(Mandatory=$true)] [int]$DaysBack ) try { $DatetoDelete = (Get-Date).AddDays(-$Daysback) if(! (Get-ChildItem $Path)) { write-Log -Message "Path is not valid" -OutputStyle consoleOnly } else { Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item -Recurse -Confirm:$false write-Log -Message "Logs older than $DaysBack have been cleared!" -OutputStyle consoleOnly } } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Error:" $ErrorMessage $FailedItem BREAK } } #============================================================================================= function Get-Timestamp() { <# .SYNOPSIS Function to create timestamp. .DESCRIPTION Returns the current timestamp. .EXAMPLE $datenow = Get-Timestamp .NOTES No Additional information about the function or script. #> try { return $(get-date).ToString("yyyy-MM-dd HH:mm:ss") } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Error:" $ErrorMessage $FailedItem BREAK } } #============================================================================================= function write-Log() { <# .SYNOPSIS Function to write log files, option to print to console. .DESCRIPTION Writes messages to log file and optional console. .PARAMETER Message Please Specify a message. .PARAMETER Logfile Please Specify a valid logfile. .PARAMETER OutputStyle Please specify an output OutputStyle. .EXAMPLE write-Log -Message "I love lamp" -Logfile "C:\temp\mylog.log" -OutputStyle noConsole .EXAMPLE write-Log -Message "I love lamp" -Logfile "C:\temp\mylog.log" -OutputStyle both .EXAMPLE write-Log -Message "I love lamp" -Logfile "C:\temp\mylog.log" -OutputStyle consoleOnly .EXAMPLE write-Log -Message "I love lamp" -Logfile "C:\temp\mylog.log" .EXAMPLE write-Log -Message "I love lamp" -OutputStyle consoleOnly .NOTES No Additional information about the function or script. #> [CmdletBinding(DefaultParameterSetName='LogFileFalse')] param( [Parameter(Mandatory=$true,Position=1,ParameterSetName='LogFileTrue')] [Parameter(Mandatory=$true,ParameterSetName='LogFileFalse')] [string]$Message, [Parameter(Mandatory=$true,ParameterSetName='LogFileTrue')] [string]$Logfile, [Parameter(Mandatory=$false,ParameterSetName='LogFileTrue')] [Parameter(Mandatory=$true,ParameterSetName='LogFileFalse')] [validateset('consoleOnly','Both','noConsole',IgnoreCase=$true)] [string]$OutputStyle ) try { $dateNow = Get-Timestamp switch ($OutputStyle) { consoleOnly { Write-Host "" Write-Host "$dateNow $Message" } both { Write-Host "" Write-Host "$dateNow $Message" if(!(Test-Path $logfile -ErrorAction SilentlyContinue)){ Write-Host "Logfile does not exist." new-Log $Logfile } Write-Output "$dateNow $Message" | Out-File $Logfile -append -encoding ASCII } noConsole{ Write-Output "$dateNow $Message" | Out-File $Logfile -append -encoding ASCII } default { Write-Host "" Write-Host "$dateNow $Message" if(!(Test-Path $logfile -ErrorAction SilentlyContinue)){ Write-Host "Logfile does not exist." new-Log $Logfile } Write-Output "$dateNow $Message" | Out-File $Logfile -append -encoding ASCII } } } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Error:" $ErrorMessage $FailedItem BREAK } } #============================================================================================= # ___ _ _ _ _ _ # |_ _|_ ____ _____ | | _____ / \ _ _| |_ ___ _ __ ___ __ _| |_(_) ___ _ __ # | || '_ \ \ / / _ \| |/ / _ \_____ / _ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \ # | || | | \ V / (_) | < __/_____/ ___ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | | # |___|_| |_|\_/ \___/|_|\_\___| /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_| #============================================================================================= |