Powershell Array Strings - 在 SSIS 中映射不同的变量参数名称

Posted

技术标签:

【中文标题】Powershell Array Strings - 在 SSIS 中映射不同的变量参数名称【英文标题】:Powershell Array Strings - Mapping different variable parameter name in SSIS 【发布时间】: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 方法获得的输出。并且,如前所述,进入下一个错误:在随机位置使用换行符破坏代码,错别字... 【参考方案1】:

答案是我创建了一个脚本来映射 CSV 文件中的变量。并从数组中保存第一列,与从数组中保存第二列相同。然后映射包和环境变量。

【讨论】:

以上是关于Powershell Array Strings - 在 SSIS 中映射不同的变量参数名称的主要内容,如果未能解决你的问题,请参考以下文章

Powershell:如果array1中的项目包含array2中的项目,我在这里做错了啥

hackrank Sorting Array of Strings

powershell 将 system.array 转换为数据表

将 Strings.xml 中的 String-Array 更改为 ArrayList

Powershell System.Array 到 CSV 文件

未完成 Given an array of strings, return all groups of strings that are anagrams.