如何在powershell中选择对象的多个子对象
目标是从包含子对象“users”和X个users的组列表中选择所有用户。稍后应将此用户列表作为批处理写入SQL Server。目标是拥有一个包含用户属性和groupname+id的表 为了加快选择和映射速度,我尝试使用powershell的select命令。但当组中有多个用户时,就会出现问题如何在powershell中选择对象的多个子对象,powershell,select,Powershell,Select,目标是从包含子对象“users”和X个users的组列表中选择所有用户。稍后应将此用户列表作为批处理写入SQL Server。目标是拥有一个包含用户属性和groupname+id的表 为了加快选择和映射速度,我尝试使用powershell的select命令。但当组中有多个用户时,就会出现问题 $GroupUsers = @() foreach ($group in $groups) { $GroupUsers = New-Object -TypeName PSObject -Pr
$GroupUsers = @()
foreach ($group in $groups) {
$GroupUsers = New-Object -TypeName PSObject -Property @{
UserLoginName = $group.Users.LoginName
UserTitle = $group.Users.Title
UserEmail = $group.Users.Email
GroupName = $group.Title
} | Select UserLoginName, UserTitle, UserEmail, GroupName
$GroupUsers+= $GroupUsers
}
生成的输出如下所示:
UserId : 33
UserLoginName : WalterX.test.com
UserTitle : Walter X
UserEmail : x@mail.de
GroupName : Group1
GroupId : 1
UserId : {1, 2, 3, 4...}
UserLoginName : {User1.test.com, User2.test.com,User3.test.com ...}
UserTitle : {User1,User2,User3...}
UserEmail : {User1@mail.com,User2@mail.com...}
GroupName : Group2
GroupId : 2
用户ID:33
UserLoginName:WalterX.test.com
用户名:Walter X
用户电子邮件:x@mail.de
群组名称:群组1
GroupId:1
用户ID:{1,2,3,4…}
UserLoginName:{User1.test.com、User2.test.com、User3.test.com…}
UserTitle:{User1,User2,User3…}
用户电子邮件:{User1@mail.com,User2@mail.com...}
群组名称:群组2
GroupId:2
如您所见,第一个用户已正确导出。数组中的第二个条目在UserLoginName、Title和EMail属性中包含多个用户
+=
,因为它会在每次添加时重建整个数组,因此无效[PSCustomObject]
$GroupUsers=foreach($groups中的组){
foreach($group.Users中的用户){
[PSCustomObject]@{
UserLoginName=$User.LoginName
UserTitle=$User.Title
UserEmail=$User.Email
GroupName=$group.Title
}
}
}