none
Pfad und Datei anlegen wenn nicht vorhanden RRS feed

  • Frage

  • Hallo,

    ich beschäftige mich seit kurzem mit Powershell und habe gleich mal eine Frage.

    Damit ich Aktionen in ein Log-File schreiben kann, möchte ich eine Funktion schreiben die mir den evtl fehlenden Pfade erstellt. Weiter muss ich testen ob die Log-Datei besteht um Text anzufügen oder neu erstellen wenn diese noch nicht existiert.

    Habe dann folgende Funktion geschrieben, aber ich bekomme die Pfade angeleg, allerdings wird auch der Filename als Pfad angelegt.

    Jetzt würde ich gerne wissen ob ich total falsch liege und ob es für diesen Zweck eine wesentlich bessere Vorgehensweise gibt, ich bin wohl auf dem falschen Weg...

    function write-log {
    	param (
    		[string] $filename,
    		[array] $text,
    		[switch] $passtrue = $false
    	)
    	
    	# Array auflösen und zu einer Text-Zeile binden
    	$Text = $Text -join (" ")
    	
    	# Datum und Zeit für Log-Eintrag
    	$currentTimeStamp = Get-Date -Format "dd.MM.yyyy HH:mm"
    		
    	# Log-Pfad und -Datei erstellen wenn noch nicht vorhanden
    	if (!(Test-Path -path $filename -ErrorAction SilentlyContinue )) {
    		# Pfad anlegen wenn nicht vorhanden
    		if (!(Test-Path -Path $filename)) {
    			New-Item -Path $filename -ItemType Directory -ErrorAction SilentlyContinue # | Out-Null
    		}
    		# Datei anlegen wenn nicht vorhanden
    		if (!(Test-Path $filename)) {
    			New-Item $filename -ItemType File -ErrorAction SilentlyContinue
    		}
    		
    		# Eintrag hinzufügen
    		Add-Content $filename -Value $text
    	}
    }

    Viele Grüsse,
    Maximilian

    Samstag, 7. Dezember 2013 14:17

Antworten

  • Ich nehm mal an das in $filename sowas steht wie C:\Logs\logfile.txt , das ist nicht richtig, du musst den Pfad also die Ordner und die Datei gesondert anlegen.

    Ungetestet:

    Text dann wie folgt einfügen:

    Add-Content $filepath\$filename "Text"
    also erst:
    if (!(Test-Path -Path $filepath)) {
    New-Item -Path $filepath -ItemType Directory -ErrorAction SilentlyContinue # | Out-Null

    dann

    if (!(Test-Path $filepath\$filename)) { New-Item $filename -ItemType File -ErrorAction SilentlyContinueDie


    freundliche Grüße Thomas


    • Bearbeitet Thomas Proehl Samstag, 7. Dezember 2013 15:25
    • Als Antwort vorgeschlagen Alex Pitulice Mittwoch, 11. Dezember 2013 16:06
    • Als Antwort markiert Alex Pitulice Freitag, 13. Dezember 2013 20:17
    Samstag, 7. Dezember 2013 15:24

Alle Antworten