#powershell
#powershell
Вопрос:
Когда я читаю свойство «Сертификаты» пользователя AD, подобное этому:
$allProfileRawCerts = (Get-ADUser -Server example.com -Filter {EmailAddress -eq $Mail} -Property Certificates).Certificates
Результирующий тип данных — ADPropertyValueCollection.
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False ADPropertyValueCollection System.Collections.CollectionBase
Однако, если я хочу использовать это для установки свойства, очевидно, ожидается другой тип данных:
Get-ADUser -Server example.com -Filter {EmailAddress -eq $Mail} | Set-ADUser -Certificates $array
Set-ADUser : Cannot convert 'Microsoft.ActiveDirectory.Management.ADPropertyValueCollection' to the type 'System.Collections.Hashtable' required by parameter 'Certificates'. Specified method is not
supported.
At line:1 char:100
... 68 -Filter {EmailAddress -eq $Mail} | Set-ADUser -Certificates $allProfileRawCerts
~~~~~~
CategoryInfo : InvalidArgument: (:) [Set-ADUser], ParameterBindingException
FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.SetADUser
Как преобразовать его, чтобы я мог его использовать?
Комментарии:
1. Где и как вы заполняете
$array
?2. Это то же самое, что и $allProfileRawCerts, я обновил вопрос. Эффект от попытки слишком многих вещей, а затем c amp; p без проверки, извините.
Ответ №1:
Оказывается, RTFM был бы хорошим советом.
-Сертификат не просто принимает список сертификатов, он принимает хэш-таблицу «operation» =»certificate», пример:
-Certificates @{Add=value1,value2,...};@{Remove=value3,value4,...}
Итак, ответ (я думаю, все еще тестирую):
Get-ADUser -Server example.com -Filter {EmailAddress -eq $Mail} | Set-ADUser -Certificates @{Add=$allpProfileCerts}