Tenho de 3 a 4 semanas para usar o PowerShell e usá-lo para interagir com o Active Directory / Exchange. (Ambos eu também sou muito novo para.)
Eu tentei ler esta página: link mas estou um pouco sobrecarregado por todas as informações, provavelmente porque estou esgotado.
Aqui está o que estou tentando fazer. Em meu código, desejo usar um endereço de email como uma string de entrada e criar um contato de email (New-MailContact) com o parâmetro -ExternalEmailAddress definido para essa string. Isso é trivialmente fácil. MAS, se um objeto no AD já existir com esse endereço, ele não me permitirá criar o contato de email. Portanto, antes da tentativa de criação, preciso determinar se a chamada para create-mailcontact produzirá um erro. (O motivo pelo qual preciso detectar isso é porque, se essa condição estiver ocorrendo, preciso executar vários outros comandos e lógica.)
O que tenho tentado fazer é coletar todas as propriedades 'WindowsEmailAddress' dos objetos retornados por essas chamadas:
get-user -resultSize unlimited
get-mailcontact -resultSize unlimited
Eu, então, observo esses resultados (eu os converto em uma boa tabela de hash na memória onde as chaves são as cadeias de caracteres de endereço de e-mail em minúsculas) para ver se o endereço de e-mail para o qual já estou configurando um contato já existe. Para a maioria dos endereços de e-mail que são usuários em nosso domínio do AD, isso funciona muito bem.
Infelizmente, há alguns que não aparecem em nenhuma dessas listas, mas ainda não consigo criar o contato de e-mail porque ele diz que o endereço já existe:
The proxy address "SMTP:[email protected]" is already being used by
"our.domain.org/Exchange Contacts/Some User Name". Please choose another proxy
address.
+ CategoryInfo : NotSpecified: ([email protected]:ADObjectId) [New-MailContact], ProxyAddressExistsException
+ FullyQualifiedErrorId : 6580586A,Microsoft.Exchange.Management.Recipient Tasks.NewMailContact
Estou com um pouco de medo de percorrer a lista retornada por get-recipient ... é isso que preciso fazer? Eu estava pensando que provavelmente há uma maneira fácil de conseguir isso, eu ainda não descobri.
Nota importante: existem cerca de 20 a 30 endereços, todos devolvendo este tipo de erro. No entanto, quando você olha acima e vê 'Exchange Contacts' no erro, bem, essa parte da string é completamente diferente de um endereço de email defeituoso para o próximo. Não tenho certeza se isso é relevante.
Por favor, sinta-se à vontade para me colocar diretamente em qualquer coisa que eu não esteja entendendo. Obrigado!