【发布时间】:2014-03-12 03:21:22
【问题描述】:
我在脚本库上有常用的帮助器等方法,我想直接在 powershell 远程处理上使用它们,但我不知道如何将它们传递给针对其他机器的脚本。
我尝试将函数作为脚本块传递并在远程服务器上执行,在本地计算机上一切正常:
function test { write-host "abc" }
Invoke-Command -ScriptBlock {Param($1) & $1} -ArgumentList ${Function:Test}
打印“abc”
但是以下不起作用:
function test { write-host "abc" }
Invoke-Command -ScriptBlock {Param($1) & $1} -ArgumentList ${Function:Test} -ComputerName "OTHERCOMPUTER" -Credential $cred
“write-host "abc" 一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。 + CategoryInfo:ObjectNotFound:(写主机“abc”:String)[],CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
知道有什么问题吗?
编辑: 为了澄清以下答案,其中函数本身在脚本块中定义不适用,因为函数取自仅位于使用远程的计算机上的通用脚本文件。它们就像“GetConfigurationFromAppConfig”、“SelectFromDatabase”等等。
如果我将函数写入每个脚本块,那么我必须在任何地方一遍又一遍地复制粘贴相同的代码。我不想使用“通用”脚本位置,每台计算机都可以在块内加载脚本(例如。“\SharedLocation\”),因为它很脆弱(很多依赖),并且必须为每个目标服务器制作远程处理(大量维护)。
【问题讨论】:
-
刚刚找到了一个更好的答案! stackoverflow.com/questions/8448808/…
标签: powershell powershell-remoting