Добавить OU пользователей / компьютеров в группу безопасности - PullRequest
1 голос
/ 10 октября 2019

Я пытаюсь сделать 2 вещи.

  1. Добавление всех пользователей в подразделении в группу безопасности
  2. Добавление всех компьютеров в подразделении в группу безопасности

Я могу успешно получить списокпользователей или компьютеров, которые мне нужны, используя:

get-aduser -filter * -SearchBase "ou=Users,ou=xx,ou=xx,dc=xx,dc=local" | FT SamAccountName

и

Get-ADComputer -LDAPFilter "(name=compu*)" -searchbase "ou=xx,ou=xx,dc=xx,dc=local" | FT Name

Они дают точные данные, которые мне нужны, как имена пользователей, так и имена хостов соответственно.

Я могудобавить группу к моему имени пользователя, используя:

Add-ADGroupMember -Identity "%GROUPNAME%" -Members MyUsername

Я не могу добавить группу для добавления на компьютер, так как она вызывает ошибки:

Add-ADGroupMember: Невозможно найти объектс идентификатором «COMPUTERNAME» в разделе «DC = XX, DC = LOCAL». В строке: 1 символ: 1

Я даже пытался быть умным, используя:

$Comps=Get-ADComputer -LDAPFilter "(name=compu*)" -searchbase "ou=XX,ou=XX,dc=XX,dc=local" | FT Name

Add-ADGroupMember -identity $Comps -MemberOf '%GROUPNAME%' 

, но это просто не получается.

Пробовал аналогично с пользователями:

$Userlist=get-aduser -filter * -SearchBase "ou=XX,ou=XX,ou=XX,ou=XX,dc=XX,dc=local" | FT SamAccountName

$Results = $Userlist | ForEach-Object {
 Add-ADGroupMember -identity %GROUPNAME% -members $_
}

Ошибка:

Add-ADGroupMember: Невозможно связать параметр 'Members'. Невозможно преобразовать значение «Microsoft.PowerShell.Commands.Internal.Format.FormatStartData» типа «Microsoft.PowerShell.Commands.Internal.Format.FormatStartData» в тип «Microsoft.ActiveDirectory.Management.ADPrincipal".
В строке:4 символа: 105

  • ...% GROUPNAME% -members $ _
  • ~~
  • CategoryInfo: InvalidArgument: (:) [Add-ADGroupMember],ParameterBindingException
  • FullyQualifiedErrorId:
    CannotConvertArgumentNoMessage, Microsoft.ActiveDirectory. Расположение операторов OU является правильным.

    В настоящее время я не знаю, следует ли мне использовать add-adgroupmember или add-adprinciplegroupmembership, и я вижу, что где-то допускаю фундаментальную ошибку.

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

    Пожалуйста, помогите!

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Кажется, вы используете FT без необходимости. Обычно вы должны возвращать ADConputer, ADUser или любой другой ADObject, но с помощью Format-Table вы конвертируете объект в экземпляр Microsoft.PowerShell.Commands.Internal.Format, который в основном является таблицей и в вашем случае непригоден для использования.

1 голос
/ 10 октября 2019

Я бы использовал Add-ADPrincipalGroupMember, поскольку он принимает объект для добавления в группу

Get-ADUser -Filter -SearchBase "ou=Users,ou=xx,ou=xx,dc=xx,dc=local" | 
    Add-ADPrincipalGroupMembership -MemberOf Group_Name

Или для добавления компьютеров:

Get-ADComputer -LDAPFilter "(name=compu*)" -searchbase "ou=xx,ou=xx,dc=xx,dc=local" | 
    Add-ADPrincipalGroupMembership -MemberOf Group_Name

Также,не форматируйте результаты до того, как с ними справитесь. В лучшем случае это создает больше работы, в худшем - разрушает вещи. Дайте нам знать, как вы поживаете :) ПРИМЕЧАНИЕ: Я не проверял это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...