Я чувствую, что мне не хватает чего-то, что должно быть очевидно, но я просто не могу понять, как это сделать.
У меня есть ps1 script, у которого есть определенная в нем функция. Он вызывает функцию, а затем пытается использовать ее удаленно:
function foo
{
Param([string]$x)
Write-Output $x
}
foo "Hi!"
Invoke-Command -ScriptBlock { foo "Bye!" } -ComputerName someserver.example.com -Credential [email protected]
Этот короткий пример script печатает "Привет!" а затем выдается сообщение: "Термин" foo "не распознается как имя командлета, функции, файла script или исполняемой программы".
Я понимаю, что функция не определена на удаленном сервере, потому что она не находится в ScriptBlock. Я мог бы переопределить его там, но я бы предпочел. Я хотел бы определить функцию один раз и использовать ее либо локально, либо удаленно. Есть ли хороший способ сделать это?