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

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: SlainteMhath
SlainteMhath 01.07.2019 um 16:36:31 Uhr
Goto Top
Moin,

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

lg,
Slainte
Mitglied: Pat.bat
Pat.bat 02.07.2019 um 13:57:16 Uhr
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
Mitglied: SlainteMhath
Lösung SlainteMhath 02.07.2019 um 14:05:04 Uhr
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