Power Shell: использование переменных при попытке добавить пользователей в группу

Я пытаюсь найти способ массового добавления пользователей в группу из переменной.
Я создаю свои переменные.
Проверяю свои переменные. А потом, когда я их использую, система интерпретирует их так, как я не ожидал. Кто-нибудь понял, как лучше всего автоматизировать этот процесс?

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>

person C_Harb    schedule 01.08.2018    source источник


Ответы (2)


Попробуйте сделать это при выборе группы, а затем передайте ее командлету Add-MsolGroupMember.

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

Альтернатива предоставленному ответу.

$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
}

Поскольку вы возвращаете несколько пользователей, вам нужно будет их foreach, так как командлет принимает только один аргумент для -GroupMemberObjectId. Кроме того, с вашей текущей настройкой получение группы устарело, поскольку вы уже знаете идентификатор объекта, с которым вы могли бы добиться того же.

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

$users = get-MsolUser

foreach($user in $users){
    Add-MsolGroupMember -GroupObjectID $groupObjectId  -GroupMemberType User -GroupMemberObjectId $user.objectId
} 
person Pete Philters    schedule 02.08.2018
comment
Если это сработает, не могли бы вы выбрать наиболее подходящий ответ, чтобы помочь будущим пользователям StackOverflow найти ответы :) - person Pete Philters; 20.08.2018