Skip to content

Commit f116588

Browse files
committed
update users in groups when parameter "-RemoveExisting" is used
while adding owners and members
1 parent 394754c commit f116588

File tree

5 files changed

+49
-19
lines changed

5 files changed

+49
-19
lines changed

src/Commands/AzureAD/AddAzureADGroupMember.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,29 @@ protected override void ExecuteCmdlet()
3131
{
3232
group = Identity.GetGroup(GraphRequestHelper);
3333
}
34+
3435
if (group != null)
3536
{
37+
38+
if (RemoveExisting.ToBool())
39+
{
40+
Microsoft365GroupsUtility.ClearMembers(GraphRequestHelper, new System.Guid(group.Id));
41+
}
42+
3643
Guid emptyGuid = Guid.Empty;
3744

3845
var userArray = Users.Where(x => !Guid.TryParse(x, out emptyGuid)).ToArray();
3946

4047
if (userArray.Length > 0)
4148
{
42-
Microsoft365GroupsUtility.AddMembers(GraphRequestHelper, new Guid(group.Id), userArray, RemoveExisting.ToBool());
49+
Microsoft365GroupsUtility.AddMembers(GraphRequestHelper, new Guid(group.Id), userArray);
4350
}
4451

4552
var secGroups = Users.Where(x => Guid.TryParse(x, out emptyGuid)).Select(x => emptyGuid).ToArray();
4653

4754
if (secGroups.Length > 0)
4855
{
49-
Microsoft365GroupsUtility.AddDirectoryMembers(GraphRequestHelper, new Guid(group.Id), secGroups, RemoveExisting.ToBool());
56+
Microsoft365GroupsUtility.AddDirectoryMembers(GraphRequestHelper, new Guid(group.Id), secGroups);
5057
}
5158
}
5259
}

src/Commands/AzureAD/AddAzureADGroupOwner.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,26 @@ protected override void ExecuteCmdlet()
3434

3535
if (group != null)
3636
{
37-
37+
38+
if (RemoveExisting.ToBool())
39+
{
40+
Microsoft365GroupsUtility.ClearOwnersAsync(GraphRequestHelper, new System.Guid(group.Id));
41+
}
42+
3843
Guid emptyGuid = Guid.Empty;
3944

4045
var userArray = Users.Where(x => !Guid.TryParse(x, out emptyGuid)).ToArray();
4146

4247
if (userArray.Length > 0)
4348
{
44-
Microsoft365GroupsUtility.AddOwners(GraphRequestHelper, new System.Guid(group.Id), userArray, RemoveExisting.ToBool());
49+
Microsoft365GroupsUtility.AddOwners(GraphRequestHelper, new System.Guid(group.Id), userArray);
4550
}
4651

4752
var secGroups = Users.Where(x => Guid.TryParse(x, out emptyGuid)).Select(x => emptyGuid).ToArray();
4853

4954
if (secGroups.Length > 0)
5055
{
51-
Microsoft365GroupsUtility.AddDirectoryOwners(GraphRequestHelper, new System.Guid(group.Id), secGroups, RemoveExisting.ToBool());
56+
Microsoft365GroupsUtility.AddDirectoryOwners(GraphRequestHelper, new System.Guid(group.Id), secGroups);
5257
}
5358
}
5459
}

src/Commands/Microsoft365Groups/AddMicrosoft365GroupMember.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,16 @@ public class AddMicrosoft365GroupMember : PnPGraphCmdlet
2121

2222
protected override void ExecuteCmdlet()
2323
{
24-
Microsoft365GroupsUtility.AddMembers(GraphRequestHelper, Identity.GetGroupId(GraphRequestHelper), Users, RemoveExisting);
24+
System.Guid groupId = Identity.GetGroupId(GraphRequestHelper);
25+
26+
if (RemoveExisting.ToBool())
27+
{
28+
Microsoft365GroupsUtility.UpdateMembersAsync(GraphRequestHelper, groupId, Users);
29+
}
30+
else
31+
{
32+
Microsoft365GroupsUtility.AddMembers(GraphRequestHelper, groupId, Users);
33+
}
2534
}
2635
}
2736
}

src/Commands/Microsoft365Groups/AddMicrosoft365GroupOwner.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,16 @@ public class AddMicrosoft365GroupOwner : PnPGraphCmdlet
2121

2222
protected override void ExecuteCmdlet()
2323
{
24-
Microsoft365GroupsUtility.AddOwners(GraphRequestHelper, Identity.GetGroupId(GraphRequestHelper), Users, RemoveExisting);
24+
System.Guid groupId = Identity.GetGroupId(GraphRequestHelper);
25+
26+
if (RemoveExisting.ToBool())
27+
{
28+
Microsoft365GroupsUtility.UpdateOwners(GraphRequestHelper, groupId, Users);
29+
}
30+
else
31+
{
32+
Microsoft365GroupsUtility.AddOwners(GraphRequestHelper, groupId, Users);
33+
}
2534
}
2635
}
2736
}

src/Commands/Utilities/Microsoft365GroupsUtility.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -289,24 +289,24 @@ internal static void PermanentlyDeleteDeletedGroup(ApiRequestHelper requestHelpe
289289
requestHelper.Delete($"v1.0/directory/deleteditems/microsoft.graph.group/{groupId}");
290290
}
291291

292-
internal static void AddOwners(ApiRequestHelper requestHelper, Guid groupId, string[] users, bool removeExisting)
292+
internal static void AddOwners(ApiRequestHelper requestHelper, Guid groupId, string[] users)
293293
{
294-
AddUsersToGroup(requestHelper, "owners", groupId, users, removeExisting);
294+
AddUsersToGroup(requestHelper, "owners", groupId, users);
295295
}
296296

297-
internal static void AddDirectoryOwners(ApiRequestHelper requestHelper, Guid groupId, Guid[] users, bool removeExisting)
297+
internal static void AddDirectoryOwners(ApiRequestHelper requestHelper, Guid groupId, Guid[] users)
298298
{
299-
AddDirectoryObjectsToGroup(requestHelper, "owners", groupId, users, removeExisting);
299+
AddDirectoryObjectsToGroup(requestHelper, "owners", groupId, users);
300300
}
301301

302-
internal static void AddMembers(ApiRequestHelper requestHelper, Guid groupId, string[] users, bool removeExisting)
302+
internal static void AddMembers(ApiRequestHelper requestHelper, Guid groupId, string[] users)
303303
{
304-
AddUsersToGroup(requestHelper, "members", groupId, users, removeExisting);
304+
AddUsersToGroup(requestHelper, "members", groupId, users);
305305
}
306306

307-
internal static void AddDirectoryMembers(ApiRequestHelper requestHelper, Guid groupId, Guid[] users, bool removeExisting)
307+
internal static void AddDirectoryMembers(ApiRequestHelper requestHelper, Guid groupId, Guid[] users)
308308
{
309-
AddDirectoryObjectsToGroup(requestHelper, "members", groupId, users, removeExisting);
309+
AddDirectoryObjectsToGroup(requestHelper, "members", groupId, users);
310310
}
311311

312312
internal static string GetUserGraphUrlForUPN(string upn)
@@ -318,7 +318,7 @@ internal static string GetUserGraphUrlForUPN(string upn)
318318
return $"users/{escapedUpn}";
319319
}
320320

321-
private static void AddUsersToGroup(ApiRequestHelper requestHelper, string groupName, Guid groupId, string[] users, bool removeExisting)
321+
private static void AddUsersToGroup(ApiRequestHelper requestHelper, string groupName, Guid groupId, string[] users)
322322
{
323323
foreach (var user in users)
324324
{
@@ -338,7 +338,7 @@ private static void AddUsersToGroup(ApiRequestHelper requestHelper, string group
338338
}
339339
}
340340

341-
private static void AddDirectoryObjectsToGroup(ApiRequestHelper requestHelper, string groupName, Guid groupId, Guid[] directoryObjects, bool removeExisting)
341+
private static void AddDirectoryObjectsToGroup(ApiRequestHelper requestHelper, string groupName, Guid groupId, Guid[] directoryObjects)
342342
{
343343
foreach (var dirObject in directoryObjects)
344344
{
@@ -440,7 +440,7 @@ internal static void UpdateOwners(ApiRequestHelper requestHelper, Guid groupId,
440440
{
441441
if (existingOwners.FirstOrDefault(o => o.UserPrincipalName == owner) == null)
442442
{
443-
AddOwners(requestHelper, groupId, new string[] { owner }, false);
443+
AddOwners(requestHelper, groupId, new string[] { owner });
444444
}
445445
}
446446
foreach (var existingOwner in existingOwners)
@@ -459,7 +459,7 @@ internal static void UpdateMembersAsync(ApiRequestHelper requestHelper, Guid gro
459459
{
460460
if (existingMembers.FirstOrDefault(o => o.UserPrincipalName == member) == null)
461461
{
462-
AddMembers(requestHelper, groupId, new string[] { member }, false);
462+
AddMembers(requestHelper, groupId, new string[] { member });
463463
}
464464
}
465465
foreach (var existingMember in existingMembers)

0 commit comments

Comments
 (0)