我有以下
$roles = 'role1;role2;role3;role4' -split ';'
$members = 'member1,member2;;member3;member4' -split ';'
$i = 0
$array = @(foreach ($role in $roles) {
[pscustomobject] @{
Role = $role
Members = $members[$i++] #-split ','
}
})
$array
输出:
Role Members
---- -------
role1 member1,member2
role2
role3 member3
role4 member4
对此进行测试:$array.members
member1,member2
member3
member4
我正在尝试访问每个角色的成员
$i=-1;
foreach($role in $array.Role)
{
$i++;
foreach($member in $role[$i].Members){$member}
}
据我了解,我应该回来
相反,我什么也没打印回来!
怎么来?
此外,如果我想按名称访问对象,则可以使用哈希表,但由于某种原因,它不能正常工作。
$roleMembers = @{}
for ($i = 0; $i -lt $roles.Count; $i++) {
# `Where Length -ne 0` to filter out empty strings
$roleMembers[$roles[$i]] = $members[($i*2)..($i*2+1)] | Where Length -ne 0
}
$roleMembers
输出
而不是输出:
输出与$array
有何不同?
答案 0 :(得分:1)
在foreach
上使用$array
,然后可以访问循环内的各个属性:
foreach($item in $array){
foreach($member in $item.Members){
"$($item.Role): $member"
}
}
这将导致
role1: member1,member2
role2:
role3: member3
role4: member4