【发布时间】:2015-03-30 07:10:39
【问题描述】:
我已经为此苦苦挣扎了几天,但我不知道如何克服它。我需要执行以下操作:
导入具有以下值的用户 csv:
ID、名称、地区
基于区域值创建一个数组,然后我可以使用该数组来填充该区域的 ID 和名称,即。
Array_SEA
AA_SCOM,亚当·安德鲁斯,东南亚
Array_OAK
BB_SCOM,鲍勃·巴克,OAK
这是我现在得到的代码:
$list2 = ipcsv .\TSE_Contact_List.csv | sort-object BU
$arraylist =@()
foreach ($vitem in $list2)
{
$arraylist += New-Object PsObject -Property @{'Array' = "Array_" + $vitem.bu}
}
foreach ($varray in $arraylist)
{
$arr = new-variable -Name $varray
$arr.value += $varray.array
$arr
}
对于具有重复区域的记录,这会产生以下错误: 新变量:名称为“@{Array=Array_SCA}”的变量已存在。
当它尝试添加值时,我也会得到以下信息: 在此对象上找不到属性“值”;确保它存在并且是可设置的。
我知道我实际上并没有在第二部分创建数组,但我不确定如何在不将变量声明转换为数组名称的情况下将变量的输出传递给数组名称,如果这有意义的话.
我用哈希表尝试了以下方法,它越来越接近:
$list2 = ipcsv .\TSE_Contact_List.csv | sort-object BU
$arraylist =@{}
foreach ($vitem in $list2){$arraylist[$vitem.bu] = @()}
foreach ($record in $list2)
{
$arraylist[$vitem.bu] += ($record.SCOMID,$record.Name,$record.BU)
Write-host "Array: "
$arraylist[$vitem.bu]
write-host ""
}
此输出显示没有错误,但它只是不断显示列表每次迭代的所有记录的添加字段,因此我认为它实际上并未将每个唯一 BU 分配给数组名称。
【问题讨论】:
-
有什么理由不使用 Group-Object,并按 Region 分组?
标签: arrays powershell hashtable dynamic-arrays