#powershell #active-directory
#powershell #active directory
Вопрос:
foreach ($Person in $People) {
$NewUserParams = @{
Name = $Person.Name
Server = 'xxxx.com:389'
Path = 'CN=Users,CN=addressBook,DC=xxxx,DC=com'
Credential = $Credentials
givenName = $Person.givenName
otherAttributes = @{sn=$Person.sn}
}
New-ADUser @NewUserParams
}
У меня есть много дополнительных атрибутов (otherAttributes), которые я хотел бы добавить, которые доступны для меня в формате New-ADUser -Name XXX -OtherAttributes @{sn= xxx} . Тем не менее, я пытаюсь использовать разбиение, чтобы сделать другие атрибуты более удобочитаемыми, наряду с другими требуемыми параметрами. Мне не нужно использовать разбрызгивание для всей команды, моей целью было разбить otherAttributes, чтобы это не была длинная строка, которая обернута. Идеи?
Комментарии:
1. Значение
otherAttributes
является хэш-таблицей. Вы можете обернуть его так же, как вы оборачиваете$NewUserParams
хэш-таблицу.2. Можете ли вы привести мне пример? Я пытался сделать это несколькими различными способами и потерпел неудачу. Я безуспешно пробовал следующие другие атрибуты = @{ sn =$Person.sn }
Ответ №1:
Значение otherAttributes
является просто еще одной хэш-таблицей и может быть обернуто как любая другая хэш-таблица:
$NewUserParams = @{
'Name' = $Person.Name
'Server' = 'server.example.com:389'
'Path' = 'cn=Users,cn=addressBook,dc=example,dc=com'
'Credential' = $Credentials
'givenName' = $Person.givenName
'otherAttributes' = @{
'sn' = $Person.sn
}
}
Лично я рекомендую заключать ключи хэш-таблиц в кавычки, чтобы избежать неожиданностей, но, по крайней мере, в приведенном выше примере это не требуется.
Если вышесказанное у вас не работает, вам необходимо предоставить более подробную информацию о выполняемом коде и ошибках, которые вы получаете. Отображение содержимого сгенерированной хэш-таблицы внутри цикла обычно помогает устранить проблемы с определенными значениями.
Комментарии:
1. Я получаю следующую ошибку: New-ADUser: не удается проверить аргумент в параметре ‘OtherAttributes’. Аргумент равен null или элемент коллекции аргументов содержит нулевое значение. В строке:12 символ:12 New-ADUser @NewUserParams ~~~~~~~~~~~~~~ Информация о категории: недопустимые данные: (:) [New-ADUser], исключение привязки параметра к параметру FullyQualifiedErrorId : ошибка проверки аргумента параметра, Microsoft. ActiveDirectory.Management. Команды.NewADUser
2. В качестве параметра в New-ADUser другие атрибуты не установлены равными хэш-таблице, возможно, это связано? У меня нет проблем с выполнением вышеупомянутой команды без параметра otherAttirbutes или если я не выполняю разбрызгивание и устанавливаю -otherAttributes @{sn= $ Person}.
3. @JGillTech Учитывая ваш код, явно невозможно, чтобы значение
OtherAttributes
было равно null, поэтому вы проверили, что ни одно из значений вложенной хэш-таблицы не равно null? Также, пожалуйста, отредактируйте свой вопрос, если вам нужно предоставить дополнительную информацию. Код и ошибки в комментариях нечитаемы.4. Да, ни одно из других значений не равно null. Я обновлю вопрос тем, что я пробовал, и результатом… что работает, а что нет.
5. Спасибо, я обнаружил ошибку при обновлении вопроса. Я забыл включить -Properties * при получении пользовательских объектов из AD 🙂