Я создаю массив объектов путем итерации.Некоторые из объектов являются избыточными, и для тех, кто хочет просто обновить одно свойство или объединить их после создания массива (хотя я не думаю, что это лучшее решение)
Мне нужен этот массив как CSVв итоге
foreach ( $Group in $groups) {
$groupmembers = Get-ADGroupMember -Identity $Group
$group = Get-ADGroup -Identity $adobeGroup -properties Description
$description = $group.description
$i = 0
foreach ($member in $groupmembers) {
if ($member.objectClass -eq "user") {
$User = get-aduser -filter 'name -eq $member.name' -properties C, mail
if ($i -eq 0) {
$Users += @(
[pscustomobject]@{
'Username' = $User.mail
'Email' = $User.mail
"Country" = $User.C
"Product Configurations" = $description
}
)
}
else {
if ($Users.Username.Contains($User.mail)) {
$changeme = $Users | where-object { $_.Username -eq $User.Username } | Select-Object -ExpandProperty "Product Configurations"
$changeme += ", " + $description
}
else {
$Users += @(
[pscustomobject]@{
'Username' = $User.mail
'Email' = $User.mail
"Country" = $User.C
"Product Configurations" = $description
}
)
}
}
}
$i++
}
}
Я ожидаю, что
if ($Users.Username.Contains($User.mail)) {
$changeme = $Users | where-object { $_.Username -eq $User.Username } | Select-Object -ExpandProperty "Product Configurations"
$changeme += ", " + $description
}
обновит «Конфигурации продукта» с «description1» до «descrption1, description2», если я итерировал этого пользователя ранее.Фактический результат заключается в том, что «Конфигурации продукта» остаются прежними.Это не имеет ничего общего с фактическим вопросом, но я получаю сообщение об ошибке, если я не делаю оператор if $ i-eq 0, так как объект еще не создан, а второй оператор if не имеет смысла тогда,Это выглядит довольно уродливо для меня.У вас есть предложение для лучшего решения?