A melhor maneira de retornar valores de uma função que grava em STDOUT?

Eu tenho algumas funções auxiliares que gravam no STDOUT para fins de log. Algumas dessas funções retornam um valor para o chamador, mas a saída inteira da função é retornada. Portanto, minha pergunta é como posso fazer com que minhas funções gravem em STDOUT E retornem um valor para o chamador sem que o valor de retorno seja poluído com todo o STDOUT emitido durante a chamada de função? Estou procurando algum tipo de padrão de design ou prática recomendada.

Considere este script:

Function a
{
    Write-Output "In Function a"
    $a = 4
    return $a   
}

$b = a

Write-Output "Outside function: `$b is $b"

A saída é

Outside function: $b is In Function a 4

Mas eu quero que a saída seja:

In Function a
$b is 4

questionAnswers(1)

yourAnswerToTheQuestion