Anbei ein paar nützliche Code-Snipsel:
Ein Snipsel zum Händeln von Log-File
- Automatisches Logrotate
- Größenbegrenzung
Ein Snipsel zum befüllen der Logs:
- Funktion zur Ermittlung der Aktuellen Script-Zeilennummer
- Funktion write-log zum schreiben ins Log-File mit Zeitstempel
- Ausgabe auf den Bildschirm wenn „$debug“ gesetzt ist.
Log-File-Handling
#-------------------------------------------------------------------------------------------------- # Handle Log-File #-------------------------------------------------------------------------------------------------- $ScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition if ( -not ( Test-Path $LogFile )) { $LogFile = join-path -Path $ScriptRoot -ChildPath $LogFile if ( -not ( Test-Path $LogFile )) { $LogFile = join-path -Path $ScriptRoot -ChildPath "LogFile.log" } } # Rotate Log if more then 1 MB if ( Test-Path $LogFile ) { if (( get-item $LogFile ).length -gt 1mb ) { for ( $i = 4; $i -ge 1; $i -- ) { if ( Test-Path ($LogFile + "." + $i) ) { move-item -force -Path ($LogFile + "." + ($i +1)) -Destination ($LogFile + "." + ($i +1)) } } } }
Log-File und Debug-Output:
#-------------------------------------------------------------------------------------------------- # Functions #-------------------------------------------------------------------------------------------------- Function Get-LineNumber { $MyInvocation.ScriptLineNumber } if ( (test-path alias:__LINE__) ) { Set-Alias -Name __LINE__ -Value Get-LineNumber } else { New-Alias -Name __LINE__ -Value Get-LineNumber } #------------------------------------------------------------------------------------- function write-log { param ( [string]$String ) $TMP = get-date -Format g $TMP += ": " $TMP += $String if ( $Debug ) { $TMP } $TMP | Out-File -append -encoding UTF8 -FilePath $LogFile } #------------------------------------------------------------------------------------- write-log "Get Mailbox for '$SamAccountname'"
PowerShell Basic Funktionen