Public/Out-Log.ps1
Add-Type -TypeDefinition "public enum LogMessageStatus { Unknown, Information, Warning, Error }" Function Out-Log { [CmdletBinding()] Param ( [string]$LogFilePath = ('.\Unnamed_{0}.log' -f (Get-Date -Format 'yyyyMMdd')), [Parameter(Mandatory = $true)] [string]$Message, [ArgumentCompleter({ [LogMessageStatus].GetEnumValues() })] [Parameter(Mandatory = $true)] [LogMessageStatus]$Status, [switch]$PassThrow ) begin { $Script:My = [HashTable]::Synchronized(@{}) $Script:My.BasePattern = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' $Script:My.BasePattern += ' > {0,-11} > {1}' if (-not (Test-Path -Path $LogFilePath -PathType Leaf)) { $Script:My.BasePattern -f 'Start', 'Log-File Created.' | Set-Content -Path $LogFilePath -PassThru:$PassThrow } } Process { $Script:My.BasePattern -f $Status, $Message | Add-Content -Path $LogFilePath -PassThru:$PassThrow } } <# Get-Command -Name Write-Log -Syntax Write-Log -Status Information -Message 'Das ist ein Informations-Log-Eintrag.' Write-Log -Status Warning -Message 'Das ist ein Warnung-Log-Eintrag.' Write-Log -Status Error -Message 'Das ist ein Fehler-Log-Eintrag.' #> |