Eu tenho tentado descobrir como modificar os proxyAddresses de alguns dos meus usuários no AD usando o PowerShell. Meu objetivo básico é usar o Get-ADObject para consultar o AD para um conjunto específico de usuários e remover todos os endereços SMTP de um domínio específico dos proxyAddresses do usuário (se existirem).
$ADobjects = @(Get-ADObject -Filter 'objectClass -eq "User"' -Properties mailNickname, ProxyAddresses) | Where-Object {$_.ProxyAddresses -Match "@BADdomain.com"}
ProxyAddresses pode parecer com:
SMTP:[email protected], smtp:[email protected], smtp:[email protected], X500:/o=info/ou=test/cn=john.doe, x400:/o=info/ou=test/cn=john.doe, smtp:[email protected]
Não há uma ordem específica para isso, os endereços X500 podem ser os primeiros, podem ser os últimos, o SMTP, o X400, etc. O SMTP em maiúsculas indica o endereço SMTP primário e as letras minúsculas indicam o endereço secundário. É possível que [email protected] possa ser o endereço SMTP principal (vou ignorar o caso ao dividi-los - posso testar o caso mais adiante no processo para alterar o SMTP principal, se necessário). E (posso estar errado), mas parece que proxyAddresses não é uma matriz normal (talvez seja uma matriz multidimensional)? Mas quando tento dividir a matriz no ",", recebo um erro:
ForEach ($Object in $ADobjects)
{
$TempInfo = $Object.ProxyAddresses.Split(",")
write-host $TempInfo
}
O erro que produz é:
Method invocation failed because [Microsoft.ActiveDirectory.Management.ADPropertyValueCollection] doesn't contain a method named 'Split'.
Posso "dividir" proxyAddresses em uma matriz separada para que eu possa trabalhar em cada um deles e removê-lo se o nome do domínio for @ BADdomain.com? Eu poderia então removê-lo da matriz. Ou é possível usar ".Replace" e substituir tudo começando com SMTP para BADdomain.com (se BADdomain.com for encontrado antes do próximo SMTP)? Não sei, tentei maneiras, mas não obtive sucesso.
Muito obrigado !!