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