目标是从包含具有X个用户的子对象“用户”的组列表中选择所有用户。此用户列表应稍后批量写入SQL Server。目标是拥有一个包含用户属性和组名+ ID的表。
为了使选择和映射更快,我尝试使用powershell的select命令。但是当组中有多个用户时会出现问题
$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
如您所见,第一个用户已正确导出。数组的第二个条目在UserLoginName,Title和EMail属性上具有多个用户...
答案 0 :(得分:0)
+=
,因为它会在每次添加时重建完整的数组,因此效果不佳[PSCustomObject]
$GroupUsers = foreach($group in $groups) {
foreach($user in $group.Users){
[PSCustomObject]@{
UserLoginName = $User.LoginName
UserTitle = $User.Title
UserEmail = $User.Email
GroupName = $group.Title
}
}
}