Skip to content

Commit e7bc5be

Browse files
committed
fix: edit group add and remove owner in same request
1 parent 3a9be9d commit e7bc5be

File tree

1 file changed

+37
-39
lines changed
  • Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Identity/Administration/Groups

1 file changed

+37
-39
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Identity/Administration/Groups/Invoke-EditGroup.ps1

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -167,29 +167,7 @@ function Invoke-EditGroup {
167167
$AddOwners = $userobj.AddOwner
168168
try {
169169
if ($AddOwners) {
170-
if ($GroupType -eq 'Distribution List' -or $GroupType -eq 'Mail-Enabled Security') {
171-
$CurrentOwners = New-ExoRequest -tenantid $TenantId -cmdlet 'Get-DistributionGroup' -cmdParams @{ Identity = $userobj.groupid } -UseSystemMailbox $true | Select-Object -ExpandProperty ManagedBy
172-
$NewManagedBy = [System.Collections.Generic.List[string]]::new()
173-
foreach ($CurrentOwner in $CurrentOwners) {
174-
$NewManagedBy.Add($CurrentOwner)
175-
}
176-
foreach ($NewOwner in $AddOwners) {
177-
$NewManagedBy.Add($NewOwner.addedFields.id)
178-
}
179-
180-
$NewManagedBy = $NewManagedBy | Sort-Object -Unique
181-
$params = @{ Identity = $userobj.groupid; ManagedBy = $NewManagedBy }
182-
$ExoBulkRequests.Add(@{
183-
CmdletInput = @{
184-
CmdletName = 'Set-DistributionGroup'
185-
Parameters = $params
186-
}
187-
})
188-
$ExoLogs.Add(@{
189-
message = "Added owner(s) $($AddOwners.value -join ', ') to $($GroupName) group"
190-
target = $userobj.groupid
191-
})
192-
} else {
170+
if ($GroupType -notin @('Distribution List', 'Mail-Enabled Security')) {
193171
$AddOwners | ForEach-Object {
194172
$Owner = $_.value
195173
$ID = $_.addedFields.id
@@ -219,22 +197,7 @@ function Invoke-EditGroup {
219197
$RemoveOwners = $userobj.RemoveOwner
220198
try {
221199
if ($RemoveOwners) {
222-
if ($GroupType -eq 'Distribution List' -or $GroupType -eq 'Mail-Enabled Security') {
223-
# get current owners
224-
$CurrentOwners = New-ExoRequest -tenantid $TenantId -cmdlet 'Get-DistributionGroup' -cmdParams @{ Identity = $userobj.groupid } -UseSystemMailbox $true | Select-Object -ExpandProperty ManagedBy
225-
$NewManagedBy = $CurrentOwners | Where-Object { $_ -notin $RemoveOwners.addedFields.id }
226-
$params = @{ Identity = $userobj.groupid; ManagedBy = $NewManagedBy }
227-
$ExoBulkRequests.Add(@{
228-
CmdletInput = @{
229-
CmdletName = 'Set-DistributionGroup'
230-
Parameters = $params
231-
}
232-
})
233-
$ExoLogs.Add(@{
234-
message = "Removed owner(s) $($RemoveOwners.value -join ', ') from $($GroupName) group"
235-
target = $userobj.groupid
236-
})
237-
} else {
200+
if ($GroupType -notin @('Distribution List', 'Mail-Enabled Security')) {
238201
$RemoveOwners | ForEach-Object {
239202
$ID = $_.addedFields.id
240203
$BulkRequests.Add(@{
@@ -253,6 +216,41 @@ function Invoke-EditGroup {
253216
Write-Warning "Error in RemoveOwners: $($_.Exception.Message)"
254217
}
255218

219+
if ($GroupType -in @( 'Distribution List', 'Mail-Enabled Security') -and ($AddOwners -or $RemoveOwners)) {
220+
$CurrentOwners = New-ExoRequest -tenantid $TenantId -cmdlet 'Get-DistributionGroup' -cmdParams @{ Identity = $userobj.groupid } -UseSystemMailbox $true | Select-Object -ExpandProperty ManagedBy
221+
222+
$NewManagedBy = [system.collections.generic.list[string]]::new()
223+
foreach ($CurrentOwner in $CurrentOwners) {
224+
if ($RemoveOwners -and $RemoveOwners.addedFields.id -contains $CurrentOwner) {
225+
$OwnerToRemove = $RemoveOwners | Where-Object { $_.addedFields.id -eq $CurrentOwner }
226+
$ExoLogs.Add(@{
227+
message = "Removed owner $($OwnerToRemove.label) from $($GroupName) group"
228+
target = $userobj.groupid
229+
})
230+
continue
231+
}
232+
$NewManagedBy.Add($CurrentOwner)
233+
}
234+
if ($AddOwners) {
235+
foreach ($NewOwner in $AddOwners) {
236+
$NewManagedBy.Add($NewOwner.addedFields.id)
237+
$ExoLogs.Add(@{
238+
message = "Added owner $($NewOwner.label) to $($GroupName) group"
239+
target = $userobj.groupid
240+
})
241+
}
242+
}
243+
244+
$NewManagedBy = $NewManagedBy | Sort-Object -Unique
245+
$params = @{ Identity = $userobj.groupid; ManagedBy = $NewManagedBy }
246+
$ExoBulkRequests.Add(@{
247+
CmdletInput = @{
248+
CmdletName = 'Set-DistributionGroup'
249+
Parameters = $params
250+
}
251+
})
252+
}
253+
256254
Write-Information "Graph Bulk Requests: $($BulkRequests.Count)"
257255
if ($BulkRequests.Count -gt 0) {
258256
#Write-Warning 'EditUser - Executing Graph Bulk Requests'

0 commit comments

Comments
 (0)