Как включить локально определенную функцию при использовании Invoke-Command для PowerShell для удаленного взаимодействия?

Я чувствую, что упускаю что-то, что должно быть очевидным, но я просто не могу понять, как это сделать.

У меня есть скрипт ps1, в котором определена функция. Он вызывает функцию, а затем пытается использовать ее удаленно:

function foo
{
    Param([string]$x)

    Write-Output $x
}

foo "Hi!"

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

Этот короткий пример сценария печатает & quot; Привет! & Quot; и затем вылетает, говоря «термин» foo 'apos; не распознается как имя командлета, функции, файла сценария или работающей программы. & quot;

Я понимаю, что функция не определена на удаленном сервере, потому что ее нет в ScriptBlock. Я мог бы переопределить это там, но я бы не хотел. Я хотел бы определить функцию один раз и использовать ее локально или удаленно. Есть ли хороший способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос