Как получить возвращаемое значение и подробный поток функции? - PullRequest
0 голосов
/ 30 марта 2019

У меня есть две функции: Write-Log и B . Функция B может выводить сообщения в Verbose Stream и возвращать некоторое значение. Мне нужно получить возвращаемое значение из функции B в некоторую переменную и передать подробный поток в функцию Write-Log по трубопроводу одновременно.

Я пытался сделать это по строке:

$a = B -message "World" -Verbose 4>&1 | Write-Log -LogFilePath "D:\test.log"

но выводит все сообщения в файл журнала, включая возвращаемое значение и переменную $ a пусто

код функции запись-запись :

function Write-Log {
    [cmdletbinding()]
    param(
        [Parameter (ValueFromPipeline=$True)]
        [string]$Text, 
        [string]$LogFilePath, 
        [switch]$Silent, 
        [ConsoleColor]$ForegroundColor
    )

    process {
        [string]$MessageWithDate = "$((Get-Date).ToString())  $Text"
        if (-not($Silent)) {
            if($ForegroundColor -eq $null) {
                Write-Host $Text
            } else {
                Write-Host $Text -ForegroundColor $ForegroundColor
            }
        }
        try {
            if(-not (Test-Path($($LogFilePath)))) {
                New-Item -Path $($LogFilePath) -ItemType "file" | Out-Null
            }
            $MessageWithDate | Out-File -filepath $($LogFilePath) -Append -NoClobber
        } catch {
            Write-Host "Error has occurred while writing log note to file $($LogFilePath): $($_ | Select-Object -Property *)" -foregroundcolor red
        }
    }
}

Код функции B :

function B{
    [cmdletbinding()]
    param(
        $message
    )

    begin {
        Write-Verbose "[Function B] - Start"
        Write-Verbose "Initial parameters:"
        ($PSBoundParameters.GetEnumerator() | ForEach-Object { Write-Verbose "- $($_.Key) = '$($_.Value)'" })
    }

    process {
        return ("Hello, " + $message)
    }

    end {
        Write-Verbose "[Function B] - End"
    }
}

Мне нужно иметь «Hello, World» в переменной $ a и что-то вроде этого в файле журнала:

3/30/2019 12:37:35 PM  [Function B] - Start
3/30/2019 12:37:35 PM  Initial parameters:
3/30/2019 12:37:35 PM  - message = 'World'
3/30/2019 12:37:35 PM  - Verbose = 'True'
3/30/2019 12:37:35 PM  [Function B] - End

Не могли бы вы помочь мне с проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...