0

展開用の powershell スクリプトを呼び出す TFS 2010 ビルドがあります。ビルド スクリプトにいくつかの引数を定義しましたが、これらはうまく機能しました。これらはビルドで使用され、InvokeProcess コントロールの Arguments プロパティを介して Powershell に渡される引数にも含まれます。

powershell スクリプトをさまざまな数のサーバーに展開する必要があるため、TFS から引数リストにサーバー ID を渡したいと思います。

ビルド定義で、string[] 型の TargetServers という新しい引数を宣言しました。ビルドを実行する前に、[ビルド プロセス パラメーター] ダイアログからこれを入力しました。

InvokeProcess コントロールの FileName プロパティを "Powershell" に設定し、Arguments プロパティを次のように設定しました。

String.Format(" ""& '{0}' '{1}' '{2}' '{3}' '{4}' '{5}' '{6}' '{7}' '{8}' '{9}' "" ", DeploymentScriptFileName, IO.Path.GetDirectoryName(DeploymentScriptFileName), "ExecuteBizTalkAppMSI.ps1", MSIFileName, BTDFFilename, TargetServerPath, TargetServers, ServerDeploymentFolder, InstallFolder, HostInstanceFilter, ApplicationName) 

私の問題は、Powershell に渡される TargetServers 引数が単純に System.String[] であることです。

ビルド ログから、Invoke Process コントロールの次の出力を確認できます。

Powershell  "& 'C:\Builds\3\x.Int.MIS.Deployment\CopyDeployScriptThenExecute.ps1'
'C:\Builds\3\\x.Int.MIS.Deployment' 'ExecuteBizTalkAppMSI.ps1'
 'x.Int.MIS-3.0.0.msi' 'x.Int.MIS.Deployment.btdfproj'
'\\d-vasbiz01\BizTalkDeployment' 'System.String[]' 'c:\BizTalkDeployment'
'c:\Program Files (x86)\x.Int.MIS for BizTalk 2010\3.0' 'BTSSvc*MIS*' " 

配列を渡す方法を教えてください。

4

1 に答える 1

1

コンマで区切られた文字列として:

PS> function foo([string[]]$x){$x}
PS> foo a,2,3
a
2
3

必要に応じて、個々の項目を引用符で囲むことができますが、構文用に予約されたスペースやその他の文字が含まれていない限り、その必要はありません。

于 2012-08-08T09:39:39.477 に答える