Преобразовать коллекцию ADPropertyValueCollection в System.Коллекции.Хэш-таблица

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