Oi Pessoal,
Conforme abordei no post anterior, vamos agora falar um pouco de um recurso que eu acho fantástico. O Active Directory Recycle Bin. O ADRB, vamos chama-lo assim, é uma ferramenta do Windows Server 2008 R2 que proporciona a habilidade de recuperar objetos previamente excluídos, como faz a lixeira do Windows. Quando temos o Recycle Bin habilitado, já que ele vem desabilitado por padrão, podemos restaurar um objeto com todos os seus atributos intactos. Por exemplo, restaurando um usuário ele voltará para seu grupo original e terá todos os acessos que tinha antes de ser excluído. Excelente, não?
Como já tinha falado anteriormente, o ADRB vem desabilitado por default e só o podemos fazer após elevarmos o nível funcional da floresta para Windows Server 2008 R2. Fique ciente que depois de habilitado o ADRB, não há volta!
Como funciona o ADRB? Vamos lá… Após excluirmos um objeto no Active Directory com o Recycle Bin habilitado, este objeto ficará em estado que chamaremos de “Objeto Excluído”. O objeto ficará neste estado até que o prazo definido expire, então passará para o estado “Objeto Reciclado” até que este prazo expire e o objeto seja fisicamente excluído do sistema. O tempo de vida de um objeto excluído é, por definição, nulo. Isto faz com que se use o valor do estado reciclado que, por definição, também é nulo. Quando o estado reciclado é nulo, usa-se o tempo de 180 dias. Por fim, o tempo total que o objeto (após ser excluído) fica guardado no Recycle Bin é de 180 dias, por definição. Podemos mudar estes valores, mas este assunto para outro post.
Habilitando o Active Directory Recycle Bin:
Para habilitar o Recycle Bin, vamos seguir os passos abaixo.
1. Após certificar-se que sua floresta é um ambiente Windows Server 2008 R2, abra o PowerShell em Start > Administrative Tools > Active Directory Module for Windows PowerShell. Caso ele solicite usuário e senha, os forneça.
Figura 1: Nível funcional do domínio.
Figura 2: Nível Funcional da Floresta.
Figura 3: Active Directory Module for Windows PowerShell.
2. Na tela de comandos do PowerShell, digite o seguinte e pressione Enter depois de cada comando:
· Import-Module ActiveDirectory
· Get-Module
· Get-Command *AD*
Devem-se obter os seguintes resultados:
Figura 4: Comandos no PowerShell.
3. Logo após, digite o comando abaixo:
· Get-ADOptionalFeature –Filter {Name –Like “*”}
Verificamos que o Recycle Bin está desabilitado, pois a propriedade EnabledScopes está vazia.
Figura 5: Propriedade EnabledScopes desabilitada.
4. Para habilitar o Recycle Bin, digite o comando abaixo, onde XFiles será trocado pelo seu <ADEntity>, que é o nome do seu domínio. Neste exemplo usamos XFiles.Local (notaram que é uma homenagem minha ao excelente seriado ArquivoX).
· Enable-ADOptionalFeature “Recycle Bin Feature” –Scope ForestOrConfigurationSet –Target “XFiles.Local”
Figura 6: Comando para habilitar o Recycle Bin.
5. Confirme digitando Y e pressione Enter.
Figura 7: Recycle Bin habilitado.
6. Para confirmar que o Recycle Bin foi habilitado, digitaremos novamente o comando do item 3, obtendo o seguinte resultado:
Figura 8: Propriedade EnabledScopes.
Observe que a propriedade EnableScopes agora contém informações.
Movendo objetos para o Recycle Bin:
Para nosso exemplo, vamos criar, no Active Directory Users and Computers, os seguintes objetos (caso queira testar os passos, não se esqueça de desabilitar a função Protect from accidental deletion ao criar os objetos! – Vide post anterior): um usuário com nome “Walter Skinner” que estará na Organizational Unit (OU) Empresa > Diretoria > Usuarios. O usuário também estará no grupo Diretoria. O resultado é mostrado na figura abaixo.
Figura 9: Grupo Diretoria – Objetos criados no AD.
Após verificarmos os objetos, excluímos o usuário Walter Skinner, o grupo Diretoria, a OU Usuarios e a OU Diretoria. Pretendemos recuperar estes objetos.
Verificando os objetos no Recycle Bin:
Nesta parte vamos verificar se um objeto específico foi excluído.
1. Para visualizar quais objetos estão no Recycle Bin, abra novamente o PowerShell e execute os seguinte comando pressionando Enter logo depois. Em DC, troque para seu domínio, nosso exemplo é XFiles.Local.
· Get-ADObject –SearchBase “CN=Deleted Objects,DC=XFiles,DC=Local” –ldapFilter “(objectClass=*)” –includeDeletedObjects | Format-Table
Obtemos o seguinte resultado, contendo os objetos que excluímos do Active Directory Users and Computers.
Figura 10: Tabela com todos os objetos deletados.
2. Para visualizar se um objeto específico se encontra no Recycle Bin, execute o comando abaixo. Neste exemplo, procuraremos o objeto usuário “Walter Skinner”.
· Get-ADObject –Filter {Name –Like “*Walter Skinner*”} –SearchScope Subtree –includeDeletedObjects
Obteremos o seguinte resultado:
Figura 11: Lista objeto específico.
Nota: O objeto usuário Walter Skinner possui informações em ObjectGUID. Esta informação deve ser guardada, pois será usada para recuperar o objeto.
Recuperando Objetos Excluídos:
Agora vem a parte mais legal. Descreveremos agora como recuperar os objetos excluídos. Lembre-se de obter o ObjectGUID do objeto que está no Recycle Bin.
1. No PowerShell, execute o comando abaixo e pressione Enter. Em <ObjectGUID> use a informação que obtemos no item anterior para o usuário “Walter Skinner”.
· Restore-ADObject –Identity <objectGUID>
Nosso exemplo resulta em uma falha. Esta falha indica que os objetos-pai do nosso usuário não existem.
Figura 12: Erro ao tentar restaurar objeto.
2. Para identificar os objetos pais do usuário, execute o comando abaixo. Este comando nos mostra que o usuário Walter Skinner pertence a um objeto que também foi excluído.
· Get-ADObject –Filter ‘Name –Like “*Walter Skinner*”’ –SearchScope Subtree –includeDeletedObjects –properties lastKnownParent
Figura 13: Propriedade LastKnownParent
3. Para finalizar este post, teremos que restaurar os objetos à partir da OU Diretoria, já que é o objeto-pai ao qual pertencem os outros objetos que foram deletados. Para restaurar o objeto OU Diretoria, teremos que primeiramente descobrir a propriedade <ObjectGUID> e depois executar o comando para restaurar. No nosso exemplo, devemos restaurar cada um dos objetos que forem necessários até chegarmos ao objeto Walter Skinner. Notem, na imagem abaixo, que quando executamos o comando para listar, aparecem dois resultados “Diretoria”, sendo que um é uma OU e o outro é um grupo. Teremos que escolher a propriedade da OU, senão o ocorrerá o erro anterior.
Figura 14: Listagem dos dois objetos Diretoria.
Figura 15: Objeto OU Diretoria restaurado.
Figura 16: OU Diretoria restaurada.
Seria interessante que o recurso aceitasse restaurar todos os objetos a partir do objeto-pai, podemos assim dizer. Dependendo da quantidade de objetos aninhados, seria um trabalhão restaurar um por um. Se alguém souber, pode falar que colocarei os devidos créditos.
Ah, já ia esquecendo… Todo o procedimento de recuperação de objetos também pode ser feito usando o ldp.exe.
UPDATE
Hoje eu tive a honra de receber o comentário de um dos influenciadores mais importantes de Fortaleza, Emílio Mansur, informando o comando para recuperação do objeto-pai com todos os objetos-filho. Segue abaixo na íntegra (e no comentário).
“Bem, poderíamos recuperar todos os objetos de Empresa\Diretoria\Usuarios pelo comando
Get-ADObject -SearchBase "CN=Deleted Objects,DC=xfiles,DC=local" -Filter {lastKnownParent -eq "OU=Usuarios,OU=Diretoria,OU=Empresa,DC=xfiles,DC=local"} -IncludeDeletedObjects | Restore-ADObject
Mais comandos em:
http://technet.microsoft.com/en-us/library/dd379509%28WS.10%29.aspx
Saúde e Sucesso,
Mansur”
Obrigado, Mansur!