PSLoggingFunctions.psm1
function Write-Log { param( [string]$Message, [string]$Path = ".\Logs\log$(get-date -format "yyyyMMdd").txt", [ValidateSet("INFO","WARNING","ERROR","DELETE","UPDATE","CREATE","ADD")] [string]$Type = "INFO", [Parameter(mandatory)] [ValidateSet("True","False")] [string]$Active, [switch]$LineBreak ) if ($Active -eq $true) { $DateTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss.fff" $LogMessage = "$($DateTime) - USER: $env:USERNAME - $Type - $Message" if (Test-Path -Path ".\Logs"){ if ($LineBreak){ Add-Content -Path $Path -Value " " return "" } Add-Content -Path $Path -Value $LogMessage } else { Write-Host "Creating new 'Logs' folder within: $PSScriptRoot" -ForegroundColor Yellow New-Item -Path . -Name Logs -ItemType Directory -Confirm:$false | Out-Null Add-Content -Path $Path -Value $LogMessage } } } function Invoke-TryCatchLog { #Error, Warning and Logging function (Send any command through the scriptblock and it will bounce correct information to you and your logfile! param( [parameter(mandatory)] $InfoLog, [parameter(mandatory)] $ScriptBlock, [parameter(mandatory)] [ValidateSet("True","False")] $LogToFile, [ValidateSet("INFO","WARNING","ERROR","DELETE","UPDATE","CREATE","ADD")] $LogType = "INFO" ) try { Write-Log -Type $LogType -Message "$InfoLog" -Active $LogToFile $Return = Invoke-Command $ScriptBlock } catch { Write-Log -Type WARNING -Message "You ran into an error when trying to: $InfoLog" -Active $LogToFile Write-Log -Type ERROR -Message "$($_.Exception.Message) - $($_)" -Active $LogToFile Write-Host "You ran into an error when trying to: $InfoLog" Write-Host "$($_.Exception.Message) - $($_)" -ForegroundColor Red return $null } return $Return } Export-ModuleMember -Function * -Alias * |