ADMT 3.2 - resolvendo erros na migração de usuários e senhas

Salve a todos!

Nesse nesse post, vou mostrar como resolver os erros:

- Unable to establish a session with the password export server. Access is denied
- Unable to establish a session with the password export server. The password Export Server Service is not running on the source server.

durante a migração de usuários e senhas utilizando o ADMT.

Como exemplo, temos o TRUST estabelecido entre os domínios abaixo.
Onde o domínio wonetwork.com.br será a origem e o destino será uptocloud.com.

O ADMT foi instalado no domínio uptocloud.com, instalação padrão.

 

Erro 1: Unable to establish a session with the password export server. Access is denied

 


 
Como disse anteriormente, foi realizada uma instalação padrão, utilizando a conta de administrador do domínio de destino.
Pois bem, a causa do erro está ai.
A conta que irá executar o ADMT, precisa de direitos administrativos no domínio de origem e no domínio de destino.
Para solucionar o erro, vamos criar uma conta para executar o ADMT e atribuir permissões administrativas em ambos os domínios.
Como exemplo, eu criei um usuário no domínio de destino chamado ADMT e adicionei o mesmo ao grupo Administrators.


 
Adicione o mesmo usuário no grupo de Administrators no domínio de origem.
 
 

*Obs: será necessário corrigir a permissão ao database do ADMT no SQL Server para o usuário criado.

 

Erro 2: Unable to establish a session with the password export server. The password Export Server Service is not running on the source server.

 

 
No domínio de destino, onde está instalado o ADMT será necessário criar uma encryption key.
Abra o prompt de comando e vá até a pasta onde o ADMT foi instalado e execute o seguinte comando substituindo os valores de acordo com a necessidade.

admt key /option:create /sourcedomain:wonetwork.com.br /keyfile:"c:\temp\key.pes" /keypassword:123456




Agora precisamos instalar o Password Export Service (PES) em um DC do domínio de origem.
Segue o link para download: https://www.microsoft.com/en-us/download/details.aspx?id=1838
 
Durante a instalação, selecione o arquivo gerado na etapa anterior:
 
 
Entre com a senha gerada:

 
Mantenha Local System Account:


Após essa etapa, o assistente irá solicitar um restart.
Após o restart, garanta que o serviço está em running.



Após as etapas acima, inicie o ADMT com a conta que contem as permissões e inicie o processo de migração de usuário selecionando Migrate Passwords.
 


 
Até a próxima.
Breno Padovan

Rastreando e-mails no Exchange Online com Powershell

Olá a todos!

Nesse post vou explicar como rastrear e-mails enviados e recebidos no Exchange Online utilizando o Powershell.

Para isso vamos utilizar o cmdlet Get-MessageTrace.

Alguns pontos a serem observados:

  • O Get-MessageTrace irá retornar dados dos últimos 10 dias
  • Se utilizarmos os parâmetros para retornar dados acima de 10 dias, será retornado um erro 
  • Dados acima de 10 dias, devemos utilizar o Start-HistoricalSearch e o Get-HistoricalSearch (assunto para outro post)
  • Se não passarmos nenhum parâmetro, dados das ultimas 48 horas serão retornados

Vamos aos exemplos:

Obtendo todos os e-mails enviados e recebidos em um determinado período:

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022


 



Especificando um Sender:

Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 -SenderAddress breno@uptocloud.com



 

 

Especificando um Sender e um Recipient:

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 -SenderAddress breno@uptocloud.com -RecipientAddress test@abcde.com.br




 

Para filtrar pelo status da entrega, adicione o parâmetro -Status <opções>
Opções: Failed, Pending, Delivered, Expanded, Quarantined, FilteredAsSpam

Filtrando por palavras específicas:

No exemplo abaixo filtramos:

- por um determinado período
- o endereço do sender contém a palavra 'dba'
- o subject contém a palavra 'Alerta'

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 |  Where {$_.SenderAddress -like '*dba*' -and $_.Subject -like '*Alerta*'}




Exportando o resultado

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 |  Where {$_.SenderAddress -like '*dba*' -and $_.Subject -like '*Alerta*'} |  Export-Csv -NoTypeInformation  -Path c:\temp\file.csv

 

Por hoje é tudo.

Breno Padovan


ADConnect - Dasabilitando / habilitando a prevenção de deleção acidental

Olá a todos!
O ADConnect quando instalado tem por default configurado para impedir um export com mais de 500 deletes.
Esse recurso foi projetado para proteger de alterações que afetariam muitos objetos.

Se houver muitas exclusões acima desse valor a exportação não será concluída e será exibido o status abaixo:







 

Verificar o limite atual de exclusão

Para verificar o limite atual de exclusão use o comando Get-ADSyncExportDeletionThreshold






 

Desabilitar o limite de exclusão

Utilize o seguinte comando Disable-ADSyncExportDeletionThreshold


 





Habilitando o limite de exclusão

Para habilitar novamente o limite de exclusão, use: Enable-ADSyncExportDeletionThreshold -DeletionThreshold 500
Altere o valor de 500 para o valor que julgar necessário .

 





Abraços a todos,
Breno Padovan

Exchange Online: Script Powershell para exportar os membros de todos os grupos de distribuição

Olá a todos!

Muitas vezes precisamos exportar os membros de todos os grupos de distribuição para alguma tipo de manutenção, consulta, etc...

O script que compartilho com vocês irá ajudar muito no dia a dia.
Ele ira exportar para um arquivo .csv separando em: Distribution Group, DisplayName, Distribution Group Email, Member DisplayName, Member Email, Member Type.

Segue o exemplo de um arquivo gerado:

Arquivo gerado









Segue script:

$OutputFile = "DistributionGroupMembers.csv" #Nome do arquivo de saída
$arrDLMembers = @{}
Connect-ExchangeOnline
#Cabeçalho do arquivo de saída
Out-File -FilePath $OutputFile -InputObject "Distribution Group DisplayName,Distribution Group Email,Member DisplayName, Member Email, Member Type" -Encoding UTF8
#Get os grupos de distribuição
$objDistributionGroups = Get-DistributionGroup -ResultSize Unlimited
Foreach ($objDistributionGroup in $objDistributionGroups)
{
write-host "Processing $($objDistributionGroup.DisplayName)..."
#Get members do grupo
$objDGMembers = Get-DistributionGroupMember -Identity $($objDistributionGroup.PrimarySmtpAddress)
write-host "Found $($objDGMembers.Count) members..."
Foreach ($objMember in $objDGMembers)
{
Out-File -FilePath $OutputFile -InputObject "$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)" -Encoding UTF8 -append
write-host "`t$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)"
}
}
 

Por hoje é isso.

Breno Padovan.

Configurando um Domain Controller (PDC Emulator) para sincronizar o relógio com NTP server da internet

Salve a todos!

Para que o Active Directory possa funcionar corretamente, ele precisa que os controladores de domínio e as estações estejam com o relógio sincronizados.
Se os relógios dos servidores/estações estiverem a mais de 5 minutos fora de sincronismo eles não se autenticarão no domínio, por exemplo.

Nesse post, vou demonstrar como sincronizar um Domain Controller (PDC Emulator) para sincronizar o relógio com NTP server da internet.


Vamos usar o seguinte comando:

w32tm /config /manualpeerlist:"yourNTPserver1,0x8 yourNTPserver2,0x8"  
/syncfromflags:manual /reliable:yes /update
w32tm /resync /rediscover 
net stop w32time && net start w32time
 

No meu caso utilizei os servidores do NTP.br

w32tm /config /manualpeerlist:"a.st1.ntp.br,0x8 b.st1.ntp.br,0x8" /syncfromflags:manual /reliable:yes /update
 




 





Verificando as configurações

w32tm /query /status

 
 





 

Algumas considerações

- Firewall: permitir entrada e saída da porta 123 UDP.

- Se o servidor em questão for uma VM rodando em ambiente virtualizado, desativar a opção de time sincronization nas configurações da VM.

 

Restaurando as configurações default

net stop w32time
w32tm /unregister
w32tm /register
net start w32time 

 

Até a próxima,

Breno Padovan

 


Exchange Online - Habilitando ou desabilitando SMTP AUTH via Powershell


Olá a todos!

Nesse rápido post vou demonstrar como habilitar ou desabilitar o envios de e-mails autenticados no Exchange Online utilizando Powershell.

Vamos usar a sintaxe: 

Set-CASMailbox -Identity <MailboxIdentity> -SmtpClientAuthenticationDisabled <$true | $false | $null>

 

 

Onde:
$null irá utlizar a configuração global
$true desabilitado
$false habilitado

 

Desabilitando

PS C:\> Set-CASMailbox -Identity breno@padovan001.com -SmtpClientAuthenticationDisabled $true

 

Habilitando

PS C:\> Set-CASMailbox -Identity breno@padovan001.com -SmtpClientAuthenticationDisabled $false

 

Verificando

PS C:\> Get-CASMailbox -Identity breno@padovan001.com

Name  ActiveSyncEnabled OWAEnabled PopEnabled ImapEnabled MapiEnabled SmtpClientAuthenticationDisabled
----  ----------------- ---------- ---------- ----------- ----------- --------------------------------
breno True              True       True       True        True        False


Breno Padovan