2012-08-08 5 views
0

배포 용 powershell 스크립트를 호출하는 TFS 2010 빌드가 있습니다. 빌드 스크립트에 대한 몇 가지 인수를 정의했으며 이것들은 훌륭하게 작동했습니다. 빌드에 의해 사용되며 InvokeProcess 컨트롤의 Arguments 속성을 통해 Powershell에 전달되는 인수에 포함됩니다.TFSBuild가 powershell에 대한 매개 변수에 배열을 포함합니다.

이제 PowerShell 스크립트를 다양한 서버에 배포해야하므로 TFS의 인수 목록에 서버 ID를 전달하고 싶습니다.

빌드 정의에서 string [] 유형의 TargetServers라는 새로운 인수가 선언되었습니다. 빌드를 실행하기 전에 Build Process Parameters 대화 상자에서이 값을 채 웁니다.

다음과 같이 내가 "파워 쉘"에 InvokeProcess 컨트롤의 FileName 속성 및 인수 속성을 설정 한

:

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) 

내 문제는 TargetServers 인수는 파워 쉘에 전달되는 단순히 [선택 System.String된다는 것이다 ].

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*' " 

사람이 배열을 전달하는 방법을 알려 주시기 바랍니다 수 : 나는 호출 프로세스 컨트롤의 다음과 같은 출력을 볼 수있는 빌드 로그에서

? 쉼표로 구분 된 문자열로

답변

1

:

당신이 원하는 경우
PS> function foo([string[]]$x){$x} 
PS> foo a,2,3 
a 
2 
3 

, 각 개별 항목에 따옴표를 넣을 수 있습니다하지만 당신은 그들이 구문 예약 공백이나 다른 문자를 포함하지 않는 한 필요가 없습니다.

+0

Powershell 측에 답해 주셔서 감사합니다. 이제는 쉼표로 구분 된 배열의 내용을 TFS에 표시하는 방법을 알아야합니다. –

+0

'string.Join (",", TargetServers.Select (s => " '"+ s + "'"))'아마도? – Joey

+0

컴파일 오류가 발생합니다. 나는 더 많은 시간이있을 때 당분간 서버를 하드 코딩해야 할 것이다. 시도해 줘서 고마워. –

관련 문제