我有一个名为“ExecutBizTalkAppMSI.ps1”的Powershell脚本文件,它包含一个名为“Install-BizTalkApplication”的函数。我需要在远程服务器上执行该函数,因此我使用“Invoke-Command”cmdlet,如下所示:
Invoke-Command -Computer $TargetServer -FilePath .\ExecuteBizTalkAppMSI.ps1 -argumentlist $MSI, $InstallFolderOnTargetServer, $Environment
问题是,虽然目标脚本运行(我在Param()部分之后直接添加了一个Write-Host),但是没有执行“Install-BizTalkApplication”功能。
任何人都可以让我知道我需要做些什么才能实现这一目标?
答案 0 :(得分:1)
我怀疑脚本看起来像那样:
# start
function Foo {}
# end
那不行。两个选项:
示例:
# script 1
param ($foo, $bar)
# function body...
# script 2
param ($foo, $bar)
function foo {
param ($foo, $bar)
# function body
}
foo -foo $foo -bar $bar
答案 1 :(得分:0)
你说它“包含一个名为”的函数......所以,如果你在本地机器上用那些参数运行那个脚本..即:
.\ExecuteBizTalkAppMSI.ps1 $MSI $InstallFolderOnTargetServer $Environment
它不起作用,因为你正在运行一个只加载一个函数的脚本,然后停止,正确吗?那是你的问题。
如果是这样,你需要在函数之前在脚本顶部添加一个param语句:
param($MSI, $InstallFolderOnTargerServer, $Environment)
然后在底部,你必须添加的功能之外:
Install-BizTalkApplication $MSI $InstallFolderonTarget $Environment
这将允许脚本接受参数,然后将这些参数传递给调用函数的语句。