如何使用Powershell

时间:2016-06-16 12:20:39

标签: arrays powershell multidimensional-array

我在Powershell中有一系列自定义对象。每个对象都有一个唯一的引用,可以在数组中查找它,以及我希望稍后使用的值,它不一定是唯一的。该数组填充在for循环中,如下所示

#Create empty array
$array1 = @()

#Populate array
foreach($otherElement in $otherArray){
  #Create custom array element
  $arrayElement = New-Object PSObject

  #Update Credential element   
  $arrayElement | Add-Member -type NoteProperty -Name 'objRef' -Value $($otherElement.getAttribute("ref") )
  $arrayElement | Add-Member -type NoteProperty -Name 'objValue' -Value $($otherElement.getAttribute("someValue") )

  #Add element to array
  $array1 += $arrayElement
}

构建数组后,我希望以某种方式访问​​对应于正确的 objRef objValue 。我知道您可以使用 -contains 参数测试数组是否包含值,但我不知道如何使用该值获取对象的索引。

基本上这个数组就像一个查找表。我想要一个函数来放入一个objRef来获取一个objValue。

在这种情况下,objValue是 System.Management.Automation.PSCredential ,为了安全起见,在运行时输入每个对象的密码。在工作中,我有时需要在具有相同5个凭证的不同机器上安装相同的软件30次,并且解决这个问题将帮助我重新自动化该过程。

提前致谢!

1 个答案:

答案 0 :(得分:3)

PowerShell是基于.NET的,所以everything arrays in .NET can do,它们可以在PowerShell中完成。特别是,由于他们实施IList,他们会.IndexOf method@(10, 4, 6).indexof(6)返回2

当然,在您的特定情况下,哈希表更合适,因为在查找数组时,查找值有恒定时间需要线性时间。对于小型数组而言,这一点很少,但如果你在循环中做事,就会很快加起来。