是否有任何方法可以使用PowerShell脚本读取TeamCity用户定义的参数值

是否有任何方法可以使用PowerShell脚本读取TeamCity用户定义的参数值,powershell,teamcity,teamcity-9.0,octopus,Powershell,Teamcity,Teamcity 9.0,Octopus,是否有任何方法可以使用PowerShell脚本读取TeamCity用户定义的参数值 下面是我想做的 我已经在TeamCity构建配置中创建了以下参数 Variable Name Variable Value ============= ============== variable1 ABC variable2 XYZ 以下是我在powershell构建步骤中使用的powershell脚本:

是否有任何方法可以使用PowerShell脚本读取TeamCity用户定义的参数值

下面是我想做的

我已经在TeamCity构建配置中创建了以下参数

Variable Name           Variable Value
=============           ==============
variable1               ABC
variable2               XYZ
以下是我在powershell构建步骤中使用的powershell脚本:

    #Samplay array
    $Array = @("variable1","variable2","variable3","variable4","variable5")

    Foreach ($item in $Array)
    {
        $VariableValue = "%" + "$item" + "%"
        if ($VariableValue)
        {
            Write-Host "Found TeamCity Variable called '$item'. Corresponding variable value is '$VariableValue'"
        }
        else
        {
            Write-Host "There isn't any TeamCity variable called '$item3'. Aborting..."
            Exit -1
        }
    }
预期产出为:

Found TeamCity Variable called 'variable1'. Corresponding variable value is 'ABC'
Found TeamCity Variable called 'variable2'. Corresponding variable value is 'XYZ'
There isn't any TeamCity variable called 'variable3'. Aborting...
我想我可以使用%teamcityvariablename%格式访问TeamCity变量。但这似乎不起作用。我不想硬编码脚本参数中的每个变量。因为变量总是会变化的。
有人可以建议我如何在PowerShell构建步骤中使用TeamCity用户定义参数(配置参数)吗。提前感谢。

经过多次搜索和测试,我找到了一个解决方案。首先,似乎没有任何方法可以从PowerShell脚本中访问配置参数类型。如果有的话,我还没有找到任何文档来概括这一点,也没有多少实验产生了访问这些参数的方法。因此,如果参数是配置参数类型,则需要将其转换为环境参数

环境参数都作为PowerShell本地执行范围内的环境变量写入。这意味着,如果需要从PowerShell脚本中访问TeamCity参数,如
env.ConnectionString
,则可以像访问任何其他环境变量一样访问它。例如:

#TeamCity populated the env:ConnectionString before running the script.   
$ConnectionString = $env:ConnectionString 
关于系统参数类型参数,我假设也没有访问这些参数的方法,但我可能错了。我不必使用系统参数,所以我不必尝试访问这些参数

还请注意,我们在项目中使用实际的PowerShell脚本。在TeamCity PowerShell构建步骤中,有一个选项可以将PowerShell代码作为“文件”或“源代码”执行。我不确定“源代码”选项是否有更大的灵活性,因为您有一个TeamCity文本区域来定义PowerShell代码。他们可能会在PowerShell中执行之前解析您的代码,但我还没有测试过这种方法

这些信息可能是众所周知的,但经过多次搜索,我无法找到这个问题的直接答案。我个人的信息来源是试错法。如果任何人有任何其他信息,概述如何在已执行的PowerShell脚本中访问系统、甚至配置、参数,请在下面发布,我将更新此答案