Visitantes

Deletar um email enviado por engano Exchange sem entrar na caixa do usuário.








Fala pessoal, blz...

Sabe aquele e-mail que o usuário mandou por engano e depois ficou desesperado e entra em contato com o HelpDesk questionando se tem como resgatar ou apagar o e-mail da caixa do Usuário?? Temos boas e más noticias para esse usuário, a boa é que sim é possível e tem duas formas pra fazer isso, uma delas é pelo próprio Outlook entrando na MSG enviada e escolhendo "Cancelar MSG enviada":



Agora a noticia ruim é que tem dois pequenos problemas, o primeiro é que quando fizer isso ele informará ao usuário que uma MSG foi cancelada o que na maioria das vezes o usuário que fez a besteira não quer que ocorra e a segunda é que só conseguirá resgatar o e-mail se ele ainda não foi aberto, mais temos uma carta na manga para contornar essa deficiência e podemos fazer esse processo via Powershell utilizando o comando Search-Mailbox utilizando -DeleteContent, abaixo alguns exemplos:


Para excluir o e-mail da caixa de um usuário em especifico:


Search-Mailbox -Identity "Usuario" -SearchQuery 'Subject:"Assunto do email"' -DeleteContent


Para excluir o e-mail da caixa de todos os usuários:


Get-Mailbox | Search-Mailbox -SearchQuery 'Subject:"Assunto do email"' -DeleteContent


Se quiser ver algumas outras sintaxes ou exemplos basta fazer:


Get-Help Search-Mailbox -examples


Bom é isso ai, espero ter ajudado pois esse procedimento é bem comum de ser solicitado, então qualquer duvida ou sugestão estou a disposição...




Script para atualização de campos do Active Directory utilizando arquivo CSV







Pessoal disponibilizo hoje um Script simples em Powershell que servirá para atualizar alguns campos de usuários no Active Directory utilizando um arquivo CSV. 

No exemplo, foi exportada uma lista do ERP da empresa que possui alguns dados que na correria da criação acabam não sendo inseridos nas propriedades dos usuários ou que são alterados ao longo do tempo e não são replicados no Active Directory como por exemplo: mudança de Cargo, alteração de Ramal ou telefone, alteração de localização do usuário, etc,etc... Então vamos por a mão na massa.

Pré-requisitos:
Necessário ter instalado os CMDLETS de administração do Active Directory da Quest

http://www.quest.com/powershell/activeroles-server.aspx

Depois do CMDLET instalado, crie um arquivo CSV com os dados que você precisa importar, na primeira linha será necessário colocar o nome dos campos. No exemplo para facilitar usei os mesmos nomes dos campos do ActiveDirectory como cabeçalho.



No site http://www.selfadsi.org/user-attributes.htm  você pode consultar o nome dos campos no Active Directory e ajustar o seu Script para atualizar outros campos alem desses que utilizei.

Tendo o arquivo CSV em mãos é só executar o Script Abaixo.

Atenção!!! Se você exportar uma planilha Excel para um arquivo CSV verifique se ela delimitou os campos com “;” ou invés de “,” , para que o Script funcione corretamente  o arquivo precisa necessariamente utilizar a virgula para delimitar os campos.


'################## INICIO SCRIPT #########################
'Nome do Script: Update_users.ps1
'Script para atualizacao do ActiveDirectory a partir da Planilha gerada do ERP
'Data: Jun/2014 - Versão 1.0
'Scripter: Marcos valente (www.marcosvalente.com.br)
'
' Os nome dos campos devem ser inseridos na primeira linha do CSV, como no Ex abaixo;
'samaccountname,City,StateorProvince,PostalCode,Title,company,department,
'physicalDeliveryOfficeName,telephoneNumber
'
'Utilização: update_users.ps1 <caminho + nome do Arquivo CSV>
'EX: Update_users 'c:\usuarios.csv'
'
' Atenção os campos devem estar separados por "," e não ";".
'#########################################################

Function Update_users([string]$Path)
{

Import-Module ActiveDirectory
Add-PSSnapin quest*

$users=Import-Csv $path

$USERS|Foreach{
Set-QADUSer -Identity $_.samaccountname -city $_.City -StateorProvince $_.stateorProvince 
-PostalCode $_.Postalcode -Title $_.Title -company $_.company -department $_.department 
-physicalDeliveryOfficeName $_.physicalDeliveryOfficeName -telephoneNumber $_.telephoneNumber}

}

'################## FIM SCRIPT ####################

Bom é isso ai pessoal, script simples e eficiente qualquer duvida ou sugestão me contatem.


Um abraço e até a próxima.