0

「ExecutBizTalkAppMSI.ps1」というPowershellスクリプトファイルがあります。これには、「Install-BizTalkApplication」という単一の関数が含まれています。リモートサーバーで関数を実行する必要があるため、次のように「Invoke-Command」コマンドレットを使用します。

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

問題は、ターゲットスクリプトは実行されますが(Param()セクションの直後にWrite-Hostを追加しました)、関数「Install-BizTalkApplication」が実行されないことです。

これを実現するために私が何をする必要があるかを誰かに教えてもらえますか?

4

2 に答える 2

1

スクリプトは次のようになっていると思います。

# start
function Foo {}
# end

それはうまくいきません。2つのオプション:

  • 関数名{}を削除し、スクリプトをそのまま実行します
  • 最初に関数を定義し、それをスクリプトの最後のステップとして実行します

例:

# 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 に答える