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

Das könnte dir auch gefallen

Schreibe einen Kommentar