PowerLumber.psm1
Write-Verbose 'Importing from [C:\projects\powerlumber\PowerLumber\private]' # .\PowerLumber\private\Get-Timestamp.ps1 #============================================================================================= # ____ _ _ #| _ \ _____ _____ _ __| | _ _ _ __ ___ | |__ ___ _ __ #| |_) / _ \ \ /\ / / _ \ '__| | | | | | '_ ` _ \| '_ \ / _ \ '__| #| __/ (_) \ V V / __/ | | |__| |_| | | | | | | |_) | __/ | #|_| \___/ \_/\_/ \___|_| |_____\__,_|_| |_| |_|_.__/ \___|_| #============================================================================================= 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-Error "Error: $ErrorMessage $FailedItem" BREAK } } #============================================================================================= # ___ _ _ _ _ _ # |_ _|_ ____ _____ | | _____ / \ _ _| |_ ___ _ __ ___ __ _| |_(_) ___ _ __ # | || '_ \ \ / / _ \| |/ / _ \_____ / _ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \ # | || | | \ V / (_) | < __/_____/ ___ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | | # |___|_| |_|\_/ \___/|_|\_\___| /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_| #============================================================================================= Write-Verbose 'Importing from [C:\projects\powerlumber\PowerLumber\public]' # .\PowerLumber\public\Clear-LogDirectory.ps1 #============================================================================================= # ____ _ _ #| _ \ _____ _____ _ __| | _ _ _ __ ___ | |__ ___ _ __ #| |_) / _ \ \ /\ / / _ \ '__| | | | | | '_ ` _ \| '_ \ / _ \ '__| #| __/ (_) \ V V / __/ | | |__| |_| | | | | | | |_) | __/ | #|_| \___/ \_/\_/ \___|_| |_____\__,_|_| |_| |_|_.__/ \___|_| #============================================================================================= function Clear-LogDirectory { <# .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-LogDirectory -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-Error "Error: $ErrorMessage $FailedItem" BREAK } } #============================================================================================= # ___ _ _ _ _ _ # |_ _|_ ____ _____ | | _____ / \ _ _| |_ ___ _ __ ___ __ _| |_(_) ___ _ __ # | || '_ \ \ / / _ \| |/ / _ \_____ / _ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \ # | || | | \ V / (_) | < __/_____/ ___ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | | # |___|_| |_|\_/ \___/|_|\_\___| /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_| #============================================================================================= # .\PowerLumber\public\New-Log.ps1 #============================================================================================= # ____ _ _ #| _ \ _____ _____ _ __| | _ _ _ __ ___ | |__ ___ _ __ #| |_) / _ \ \ /\ / / _ \ '__| | | | | | '_ ` _ \| '_ \ / _ \ '__| #| __/ (_) \ 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. #> [CmdletBinding( SupportsShouldProcess=$true )] param( [Parameter(Mandatory=$true)] [string]$Logfile ) try { if( !(Split-Path -Path $Logfile -ErrorAction SilentlyContinue)) { write-Log -Message "Creating new Directory." -OutputStyle consoleOnly if($PSCmdlet.ShouldProcess("Creating new Directory")) {New-Item (Split-Path -Path $Logfile) -ItemType Directory -Force} } write-Log -Message "Creating new file." -OutputStyle consoleOnly if($PSCmdlet.ShouldProcess("Creating new File")){New-Item $logfile -type file -force -value "New file created."} } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Write-Error "Error: $ErrorMessage $FailedItem" BREAK } } #============================================================================================= # ___ _ _ _ _ _ # |_ _|_ ____ _____ | | _____ / \ _ _| |_ ___ _ __ ___ __ _| |_(_) ___ _ __ # | || '_ \ \ / / _ \| |/ / _ \_____ / _ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \ # | || | | \ V / (_) | < __/_____/ ___ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | | # |___|_| |_|\_/ \___/|_|\_\___| /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_| #============================================================================================= # .\PowerLumber\public\Write-Log.ps1 #============================================================================================= # ____ _ _ #| _ \ _____ _____ _ __| | _ _ _ __ ___ | |__ ___ _ __ #| |_) / _ \ \ /\ / / _ \ '__| | | | | | '_ ` _ \| '_ \ / _ \ '__| #| __/ (_) \ V V / __/ | | |__| |_| | | | | | | |_) | __/ | #|_| \___/ \_/\_/ \___|_| |_____\__,_|_| |_| |_|_.__/ \___|_| #============================================================================================= 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-Output "" Write-Output "$dateNow $Message" } Both { Write-Output "" Write-Output "$dateNow $Message" if(!(Test-Path $logfile -ErrorAction SilentlyContinue)){ Write-Warning "Logfile does not exist." New-Log -Logfile $Logfile } Write-Output "$dateNow $Message" | Out-File $Logfile -append -encoding ASCII } noConsole{ Write-Output "$dateNow $Message" | Out-File $Logfile -append -encoding ASCII } default { Write-Output "" Write-Output "$dateNow $Message" if(!(Test-Path $logfile -ErrorAction SilentlyContinue)){ Write-Warning "Logfile does not exist." New-Log -Logfile $Logfile } Write-Output "$dateNow $Message" | Out-File $Logfile -append -encoding ASCII } } } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Write-Error "Error: $ErrorMessage $FailedItem" BREAK } } #============================================================================================= # ___ _ _ _ _ _ # |_ _|_ ____ _____ | | _____ / \ _ _| |_ ___ _ __ ___ __ _| |_(_) ___ _ __ # | || '_ \ \ / / _ \| |/ / _ \_____ / _ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \ # | || | | \ V / (_) | < __/_____/ ___ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | | # |___|_| |_|\_/ \___/|_|\_\___| /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_| #============================================================================================= Write-Verbose 'Importing from [C:\projects\powerlumber\PowerLumber\classes]' |