【发布时间】:2020-03-08 11:35:25
【问题描述】:
我正在自动化 SSIS 部署。我想将参数映射到环境中的参数。包和环境中的参数具有不同的变量名称。示例如下
$ParameterCount = 2 # Value will be coming from environment variable that is set
$vPackage1 = "vId" # Value will be coming from environment variable
$vEnvironment1 = "ApiId" # Value will be coming from environment variable
$vPackage2 = "vKey" # Value will be coming from environment variable
$vEnvironment2 = "ApiKey" # Value will be coming from environment variable
$vPackage = [System.Collections.ArrayList]@()
$vEnvironment= [System.Collections.ArrayList]@()
for ($i = 1; $i -le $(ParamterCount); $i += 1) {
# This doesnt work!!!. I want to get the value of vPackage1 variable
$vPackage[$i].Add($vPackage + $i)
# This doesnt work!!!. I want to get the value of vPackage2 variable
$vEnvironment[$i].Add($vPackage + $i)
}
# Then for deployment. I want to Map those two variables.
$Counter = $Counter + 1
$Package.Paramters[$vPackage[$Counter]]
.Set([Microsoft.SqlServer.Management.IntegrationServices.ParameterInfo
+ ParameterValueType]::Referenced, $vEnvironment[$Counter])
我将使用 Bamboo 进行部署。上面所说的变量来自于 Bamboo 的变量。
我该如何处理?
【问题讨论】:
-
脚本中有多个编码错误,例如实际 For 循环之前的 $ 符号,使其成为变量,而不是循环。请重新编译所有可能的编译错误并进行更新,因为修复它们太费时间了。谢谢。
-
你有错字
ParamterCount。不仅如此,而且你的循环是错误的:$for ($i = 1; $i -le $(ParamterCount); $i += 1) {应该是for ($i = 1; $i -le $ParameterCount; $i++) {。接下来这根本没有意义:$vPackage[$i].Add($vPackage + $i).. 您正在将 Arraylist$vPackage添加到 arraylist 本身(并尝试向其添加整数值 1)???。还有$Counter = Counter + 1没有美元符号,而且名单还在继续…… -
是的。我正在尝试获取 $vPackage1 的变量输出,即我只添加了 $vPackage + $i 来演示我的问题。 @Theo
-
$vPackage + $i不会为您提供变量$vPackage1的名称或值。要获取具有构造名称的变量的值,请使用(Get-Variable -Name ('vPackage' + $i)).Value。接下来,您将使用$vPackage[$i].Add遇到另一个异常。添加到 Arraylist 是在列表本身上,而不是在索引项上(顺便说一句,尚未创建),所以你应该在那里使用[void]$vPackage.Add。 ([void]用于抑制您从Add方法获得的输出。并且,如前所述,进入下一个错误:在随机位置使用换行符破坏代码,错别字...
标签: sql-server powershell ssis bamboo