展開用の 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*' "
配列を渡す方法を教えてください。