隐藏变量密码参数 - powershell 4.0

时间:2017-06-06 13:43:23

标签: powershell variables tfs2017

我正在创建一个带有powershell脚本的发布定义,用来自它工作的发布定义中的env变量替换文件,但它似乎没有捕获隐藏在发布定义中的密码变量。有没有办法告诉powershell寻找隐藏的变量?

UPDATE:这是脚本,它找到了$paramsFilePath中未隐藏我的密码的所有变量。在发布定义中的环境变量中隐藏了脚本并且脚本没有找到它。

param(
    [string]$paramsFilePath,

)

Write-Verbose -Verbose "Entering script Replace-SetParameters.ps1"
Write-Verbose -Verbose ("Path to SetParametersFile: {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 "__(\w+)__") {
        $setting = Get-ChildItem -path env:* | ? { $_.Name -eq $Matches[1] }
        if ($setting) {
            Write-Verbose -Verbose ("Replacing key {0} with value from environment" -f $setting.Name)
            $line = $_ -replace "__(\w+)__", $setting.Value
        }
    }
    $newContents += $line + [Environment]::NewLine
}

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



Write-Verbose -Verbose "Exiting script Replace-SetParameters.ps1"

1 个答案:

答案 0 :(得分:1)

与普通变量不同,您尝试获取的密码是秘密变量。

  

秘密变量

     

如果包含a,我们建议您使用变量Secret   密码,密钥或您需要避免的其他类型的数据   曝光

我们所做的变量替换是对任务的输入,我们不会解析脚本。要使用秘密变量,您必须将这些变量作为输入添加到脚本中,我们明确地不将这些变量填充到环境中。你可以看看这个讨论:Use hidden / secret variables in commands