我在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次,并且解决这个问题将帮助我重新自动化该过程。
提前致谢!
答案 0 :(得分:3)
PowerShell是基于.NET的,所以everything arrays in .NET can do,它们可以在PowerShell中完成。特别是,由于他们实施IList
,他们会.IndexOf
method:@(10, 4, 6).indexof(6)
返回2
。
当然,在您的特定情况下,哈希表更合适,因为在查找数组时,查找值有恒定时间需要线性时间。对于小型数组而言,这一点很少,但如果你在循环中做事,就会很快加起来。