pat.bat
Goto Top

Powershell - Fukntionsaufruf beim erstellen eines Strings

Hallo zusammen,

Ich bin gerade dabei in meinem Skript zur Erstellung eines Logs den Zusammenbau des Textes dynamischer zu gestalten. Und um die Pflege der Texte zu erleichtern. Hoffe das ich damit richtig fahre face-smile

Anbei mal das kleine Skript, welches von verschiedenen anderen Skripts "benutzt" werden soll:

# Skript zum erstellen eines Logs
#-------------------------------------------------------------------

param(
    $LogPath,
    $MessageNr,
    $PProcessName,
    $LogLevel
    )

    switch ($LogLevel)
    {
        1 {$LogLevel = "[INFO]"}  
        2 {$LogLevel = "[WARNUNG]"}  
        3 {$LogLevel = "[FEHLER]"}  
        default {$LogLevel = "[INFO]"}  
    }

    $DateNow = Get-Date -Format "dd.MM.yyyy HH:mm:ss"  
    $FileInp = $LogLevel + ' | ' + $DateNow + ' | ' + $PProcessName + ' | ' + Create_MessageText($MessageNr)  
    
    If (Test-Path $LogPath)
    {
        Add-Content $LogPath -Value $FileInp
    }
    else
    {
        New-Item $LogPath -type file
        Add-Content $LogPath -value $FileInp
    }

    function Create_MessageText($MessageNr)
    {
        $MessageText = &"C:\Users\bprosoz\Desktop\Jobs\Batch Zusatz\MessageList.ps1" -MessageNr $MessageNr  
        
        return $MessageText
    }

Woran ich gerade festhänge ist die definition der Variable $FileInp.
Dort versuche ich am Ende durch einen Funktionsaufruf eine Nachricht auszugeben.
Die Funktion wiederum ruft ein anderes Skript auf, worin dann per Switch meine Text-Möglichkeiten stehen.

Nur scheint es, das man so eine Funktion nicht mit einbinden kann, bei der Erstellung des Strings, da er mir den Funktionsaufruf Create_MessageText rot unterstreicht.
Ich konnte leider nicht auf der Schnelle irgendwas brauchbares auf Google finden.

Content-Key: 467986

Url: https://administrator.de/contentid/467986

Printed on: April 25, 2024 at 11:04 o'clock

Member: SlainteMhath
SlainteMhath Jul 01, 2019 at 14:36:31 (UTC)
Goto Top
Moin,

ich denk die Funktions-Definition muss vor der ersten Verwendung erfolgen - also am besten am Anfang des Scripts.

lg,
Slainte
Member: Pat.bat
Pat.bat Jul 02, 2019 at 11:57:16 (UTC)
Goto Top
Hallo,

erstmal Danke für den Vorschlag.

Leider liegt es nicht daran.

Die Fehlermeldung lautet: Unerwartetes Token "Create_MessageText" in Ausdruck oder Anweisung
Member: SlainteMhath
Solution SlainteMhath Jul 02, 2019 at 12:05:04 (UTC)
Goto Top
Bei näherer Betrachtung ist deine Funktions Definition auch nicht korrekt...
function Create_MessageText
    {
    param([string]$MessageNr)
    $MessageText = &"C:\Users\bprosoz\Desktop\Jobs\Batch Zusatz\MessageList.ps1" -MessageNr $MessageNr  
    return $MessageText
}
und der Aufruf dann mit
$MessageText = Create_MessageText -MessageNr $MessageNr
$FileInp = .... + $MessageText