2017-05-26 76 views
0

我有一个创建.zip包和projectName.SetParameters.xml我想用我的脚本在此改变中的projectName.SetParameters.xml文件中的参数构建TFS-2017 - 添加了一步输入的用户名和密码

我有一个powershell脚本与Mandotary参数,我希望用户输入他们的用户名和密码,然后才可以部署到TFS IIS我按照本指南link 更新:REALESE构建工作,但它不要求用户输入用户名和密码,我是不是要手动设置在PowerShell的步骤参数箱内?

在我的TFS我有一个PowerShell的步骤i将添加的参数-paramsFilePath C:/ somepath /.../.../ projectName.SetParameters.xml

param(
    [string]$paramsFilePath, 
    [Parameter(Mandatory=$true)] 
    [string]$username, 
    [Parameter(Mandatory=$true)] 
    $password 
) 
Write-Verbose -Verbose "Entering script setParameters.ps1" 
Write-Verbose -Verbose ("Path to Parameters: {0}" -f $paramsFilePath) 

# get the environment variables 
$vars = Get-ChildItem -path env:* 

# read in the setParameters file 
$contents = Get-Content -Path $paramsFilePath 

# perform a regex replacement 
$newContents = ""; 
$contents | % { 
    $line = $_ 
    if ($_ -match "__Username__") { 
     $setting = Get-ChildItem -path env:* | ? { $_.Name -eq $Matches[1] } 
     if ($setting) { 
      Write-Verbose -Verbose ("Replacing key {0} with value from environment" -f $username.Name) 
      $line = $_ -replace "__Username__", $username.Value 
     } 
    } 
    $newContents = $line 
} 

Write-Verbose -Verbose "Overwriting SetParameters file with new values" 
Set-Content $paramsFilePath -Value $newContents 

Write-Verbose -Verbose "Exiting script setParameters.ps1" 

这里是我的parameters.xml代码

<!--?xml version="1.0" encoding="utf-8" ?--> 
<parameters> 
    <parameter name="machineURL" description="Please enter the name of the Environment" defaultvalue="_UrlValue_" tags=""> 
     <parameterentry kind="XmlFile" scope="\\web.config$" match="/configuration/appSettings/add[@key='machineURL']/@value"> 
     </parameterentry> 
    </parameter> 
    <parameter name="username" description="Please enter the username" defaultvalue="__UserName__" tags=""> 
     <parameterentry kind="XmlFile" scope="\\web.config$" match="/configuration/appSettings/add[@key='username']/@value"> 
     </parameterentry> 
    </parameter> 
    <parameter name="password" description="Please enter the password" defaultvalue="__Password__" tags=""> 
     <parameterentry kind="XmlFile" scope="\\web.config$" match="/configuration/appSettings/add[@key='password']/@value"> 
     </parameterentry> 
    </parameter> 
    </parameters> 

回答

1

在TFS PowerShell执行构建和发布仅在非交互模式成为可能。构建和发布过程只会将执行结果传送到构建控制台。

你必须创建一个用户名的变量。对于密码,您应该使用隐藏变量:

enter image description here

是的,你必须把 PowerShell的一步

enter image description here

注意的参数箱内的参数:密码字段似乎安全,而不是可读的,但它是不是真的很难读一个隐藏变种的内容iable。

创建变量并设置值。之后,您可以在PowerShell步骤参数框中使用此命令行参数。

-paramsFilePath $(paramsFilePath) -username $(username) -password $(password) 
+0

嗨,我现在得到这个错误'不能绑定参数参数'用户名' –

+0

您是否在您的释放定义创建变量? – k7s5a

+0

是的,我得到它排序,但我有另一个问题一切似乎工作,但在我的setParameters.xml文件中,它只捕获第一个参数'