相关疑难解决方法(0)

使用PowerShell的Invoke-Command进行远程处理时,如何包含本地定义的函数?

我觉得我错过了一些显而易见的东西,但我无法弄清楚如何做到这一点.

我有一个ps1脚本,其中定义了一个函数.它调用该函数,然后尝试远程使用它:

function foo
{
    Param([string]$x)

    Write-Output $x
}

foo "Hi!"

Invoke-Command -ScriptBlock { foo "Bye!" } -ComputerName someserver.example.com -Credential someuser@example.com
Run Code Online (Sandbox Code Playgroud)

这个简短的示例脚本打印出"嗨!" 然后崩溃说"术语'foo'不被识别为cmdlet,函数,脚本文件或可操作程序的名称."

我知道该功能未在远程服务器上定义,因为它不在ScriptBlock中.我可以在那里重新定义它,但我不愿意.我想定义一次该函数并在本地或远程使用它.有没有办法做到这一点?

powershell powershell-2.0 powershell-remoting

29
推荐指数
3
解决办法
3万
查看次数