0

我有一个名为“ExecutBizTalkAppMSI.ps1”的 Powershell 脚本文件,其中包含一个名为“Install-BizTalkApplication”的函数。我需要在远程服务器上执行该功能,所以我使用“Invoke-Command”cmdlet,如下所示:

Invoke-Command -Computer $TargetServer -FilePath .\ExecuteBizTalkAppMSI.ps1 -argumentlist $MSI, $InstallFolderOnTargetServer, $Environment

问题是,虽然目标脚本运行(我直接在 Param() 部分之后添加了一个 Write-Host),但没有执行函数“Install-BizTalkApplication”。

任何人都可以让我知道我需要做些什么来实现这一点吗?

4

2 回答 2

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
于 2012-08-01T12:23:51.393 回答
0

您说它“包含一个名为”的函数...因此,如果您使用这些参数在本地计算机上运行该脚本..即:

.\ExecuteBizTalkAppMSI.ps1 $MSI $InstallFolderOnTargetServer $Environment

它不起作用,因为您正在运行一个只加载一个函数然后停止的脚本,对吗?那是你的问题。

如果是这样,您需要在脚本顶部的函数之前添加一个 param 语句:

param($MSI, $InstallFolderOnTargerServer, $Environment)

然后在底部,在函数之外,您必须添加:

Install-BizTalkApplication $MSI $InstallFolderonTarget $Environment

这将允许脚本接受参数,然后将这些参数传递给调用函数的语句。

于 2012-08-01T12:24:40.053 回答