Como incluo uma função definida localmente ao usar o Invoke-Command do PowerShell para comunicação remota?

Eu sinto que estou perdendo algo que deveria ser óbvio, mas eu simplesmente não consigo descobrir como fazer isso.

Eu tenho um script ps1 que tem uma função definida nele. Ele chama a função e, em seguida, tenta usá-lo remotamente:

function foo
{
    Param([string]$x)

    Write-Output $x
}

foo "Hi!"

Invoke-Command -ScriptBlock { foo "Bye!" } -ComputerName someserver.example.com -Credential [email protected]

Este pequeno exemplo de script imprime "Hi!" e, em seguida, falha dizendo "O termo 'foo' não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável."

Eu entendo que a função não está definida no servidor remoto porque não está no ScriptBlock. Eu poderia redefinir isso lá, mas prefiro não. Gostaria de definir a função uma vez e usá-la local ou remotamente. Existe uma boa maneira de fazer isso?

questionAnswers(4)

yourAnswerToTheQuestion