Мне нужно обновить массив сертификатов, хранящихся в учетной записи AD пользователя.
У меня есть это:
$allProfileRawCerts = Get-ADUser -Server example.com -Filter {EmailAddress -eq $Mail} -Property Certificates
Что дает
Certificates : {System.Security.Cryptography.X509Certificates.X509Certificate, System.Security.Cryptography.X509Certificates.X509Certificate,
System.Security.Cryptography.X509Certificates.X509Certificate}
DistinguishedName : <>
Enabled : True
GivenName : <>
Name : <>
ObjectClass : user
ObjectGUID : <>
SamAccountName : <>
SID : <>
Surname : <>
UserPrincipalName : <>
Я нашел Ошибка типа параметра PowerChell Set-ADUser userCertificate , которая обеспечивает операцию «добавления»:
$certUser.Usercertificate | ForEach-Object{
Set-ADUser "ME" -certificate @{Add=[System.Security.Cryptography.X509Certificates.X509Certificate]$_}
}
Однако мне нужно не добавить , а update - удалить некоторые сертификаты в зависимости от условия, затем добавить новые.
Один из подходов (я думаю) состоит в том, чтобы удалить все сертификаты из профиля пользователя, создать новый массив и обновить - но я действительно,на самом деле не нравится удалять действительные данные в неатомарной операции.
Кроме того, проблема (по крайней мере для меня) состоит в том, что я не могу фильтровать (скорее базовый) сертификат X509, но мне нужно преобразоватьсначала к X509Certificate2:
$allProfileSMIMECerts = $allProfileRawCerts.Certificates |
foreach {New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $_} |
Where-Object { $_.EnhancedKeyUsageList.FriendlyName -eq "Secure Email" }
Что мне нужно:
- Получить список всех сертификатов.
- Удалить все, для которых
$_.EnhancedKeyUsageList.FriendlyName -eq "Secure Email"
истинно. - Добавить новый сертификат.
Как это сделать хорошим способом?