FunctionsPublic/Set-GraphGroupDynamicMembership.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
<#
.SYNOPSIS Set dynamic membership properties for group .DESCRIPTION Set dynamic membership properties for group #> function Set-GraphGroupDynamicMembership { [cmdletbinding()] param ( [parameter(Mandatory=$true)][psobject]$accessToken, [parameter(Mandatory=$true)][string]$groupID, [parameter(Mandatory=$true)][bool]$dynamicGroup, [parameter(Mandatory=$false)][string]$dynamicMembershipRule ) end { if($accessToken.Length -eq 0 -or $groupID.Length -eq 0) { Write-Error "Invalid input received. Please specify all parameters in order to use this function." return $null } if($true -eq $dynamicGroup -and $dynamicMembershipRule.Length -eq 0) { Write-Error "Specify dynamic membership rule to set group to dynamic." return $null } $existingGroup = Get-GraphGroup -accessToken $accessToken -groupID $groupID if($null -eq $existingGroup) { Write-Error "Group not found. Please specify an existing group." return $null } $newGroupTypes = $existingGroup.groupTypes # # Remove dynamic grouptype if group shouldn't be dynamic # if($true -eq $newGroupTypes.Contains("DynamicMembership") -and $false -eq $dynamicGroup) { $newGroupTypes = $newGroupTypes | Where-Object {$_ -ne "DynamicMembership"} } # # Add dynamic grouptype if group should be dynamic # elseif ($false -eq $newGroupTypes.Contains("DynamicMembership") -and $true -eq $dynamicGroup) { $newGroupTypes += "DynamicMembership" } if($true -eq $dynamicGroup) { $sendBody = @{ "groupTypes" = $newGroupTypes; "membershipRule" = "$($dynamicMembershipRule)"; "membershipRuleProcessingState" = "On" } | ConvertTo-Json } else { $sendBody = @{ "groupTypes" = $newGroupTypes; "membershipRule" = ""; "membershipRuleProcessingState" = "Off" } | ConvertTo-Json } $responseBody = Invoke-RestMethod ` -Uri "https://graph.microsoft.com/v1.0/groups/$($groupID)" ` -Headers @{"Authorization" = "Bearer $($accessToken.AccessTokenCredential.GetNetworkCredential().password)"} ` -Body $sendBody ` -ContentType "application/json" ` -Method PATCH if($null -eq $responseBody) { return $null } else { return $responseBody.value } } } |