【问题标题】:TFS-2017 - Add a step to enter Username and passwordTFS-2017 - 添加输入用户名和密码的步骤
【发布时间】:2017-10-27 13:32:22
【问题描述】:

我有一个创建 .zip 包和 projectName.SetParameters.xml 的构建我想用我的脚本覆盖 projectName.SetParameters.xml 文件中的参数

我有一个带有 Mandotary 参数的 powershell 脚本,我希望用户在他们可以部署到 TFS 中的 IIS 之前输入他们的用户名和密码,我正在遵循本指南 link 更新:REalese 构建有效,但它不要求用户输入用户名和密码,我是否必须在 Powershell 步骤的参数框中手动设置它们?

在我的 TFS 中,我有一个 powershell 步骤,我添加了参数 -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>

【问题讨论】:

    标签: powershell tfs parameters arguments powershell-4.0


    【解决方案1】:

    TFS 构建和发布中的 PowerShell 执行只能在非交互模式下进行。构建和发布过程只会将执行结果流式传输到构建控制台。

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

    是的,您必须将参数放在 PowerShell步骤

    注意:密码字段看起来安全且不可读,但读取隐藏变量的内容并不难。

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

    -paramsFilePath $(paramsFilePath) -username $(username) -password $(password)
    

    【讨论】:

    • 嗨,我现在收到此错误Cannot bind argument to parameter 'username
    • 您是否在发布定义中创建了变量?
    • 是的,我把它排序了,但我还有另一个问题,一切似乎都正常,但在我的 setParameters.xml 文件中它只捕获第一个参数&lt;parameter name="machineURL" ... 我的语法对于传递多个参数是否正确?跨度>
    • sn-p 的结果是一个损坏的 xml 文件。将 $newContents = $line 更改为 $newContents += $line
    • 这是一个新话题。您可以为此创建一个单独的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2015-10-04
    • 2013-08-26
    相关资源
    最近更新 更多