C_Harb
C_Harb

Reputation: 11

Power Shell: Using variables when trying to add users to group

I have been trying to find a way to bulk add users to a group from a variable.
I create my variables.
Test my variables. And then when I use them, the system interprets them in a way I didn't expect. Has anyone figured out how to best automate this process?

PS C:\WINDOWS\system32> $user = get-MsolUser | Select ObjectID
PS C:\WINDOWS\system32> $user

ObjectId
--------
97232511-7ea5-4f26-9372-************
baa75007-e0fc-4265-b17c-************


PS C:\WINDOWS\system32> $group = get-MsolGroup -ObjectId 776da14a-9c10-4dd1-b880-************ | Select ObjectID
PS C:\WINDOWS\system32> $group

ObjectId
--------
776da14a-9c10-4dd1-b880-************


PS C:\WINDOWS\system32> Add-MsolGroupMember -GroupObjectID $group -GroupMemberType User -GroupMemberObjectId $user
Add-MsolGroupMember : Cannot bind parameter 'GroupObjectId'. Cannot convert the "@{ObjectId=776da14a-9c10-4dd1-b880-d0646d49e926}"
value of type "Selected.Microsoft.Online.Administration.Group" to type "System.Guid".
At line:1 char:36
+ Add-MsolGroupMember -GroupObjectID $group -GroupMemberType User -Grou ...
+                                    ~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Add-MsolGroupMember],     ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Online.Administration.Automation.AddGroupMember

PS C:\WINDOWS\system32>

Upvotes: 1

Views: 2130

Answers (2)

Pete Philters
Pete Philters

Reputation: 889

Alternative to answer provided.

$group = get-MsolGroup -ObjectId 776da14a-9c10-4dd1-b880-************

$users = get-MsolUser

foreach($user in $users){
    Add-MsolGroupMember -GroupObjectID $group.objectId -GroupMemberType User -GroupMemberObjectId $user.objectId
}

Because you're returning multiple users you'll want to foreach them as the cmdlet only accepts one argument for the -GroupMemberObjectId. Also with your current set up getting the group is obsolete since you already know the object id you could achieve the same with.

$groupObjectId = "776da14a-9c10-4dd1-b880-************"

$users = get-MsolUser

foreach($user in $users){
    Add-MsolGroupMember -GroupObjectID $groupObjectId  -GroupMemberType User -GroupMemberObjectId $user.objectId
} 

Upvotes: 0

HariHaran
HariHaran

Reputation: 4119

Try this while selecting a group and then pass it to the Add-MsolGroupMember cmdlet.

$group = get-MsolGroup -ObjectId 776da14a-9c10-4dd1-b880-************ | Select-Object -ExpandProperty ObjectID

Upvotes: 1

Related Questions