Visitantes

Obtendo o Tamanho do Mailbox no Exchange Server (2007/2010) (Get Size MailBox on Exchange Server)




Fala pessoal!!!

Hoje vou publicar um comando bem útil em powershell, esse comando vai listar o tamanho e a quantidade de itens da caixa postal dos usuários do Exchange, esse comando pode ser muito útil em uma migração, pois pode nos ajudar a decidir por onde começar e termos uma estimativa de tempo da migração.

Vamos utilizar os CMDLETs “Get-Mailbox” e “Get-MailboxStatistic”, o primeiro vai listar os usuários e depois concatenar com o segundo que irá levantar os dados que precisamos, então vamos lá!!!

Da forma abaixo, será listado todas as Mailbox do Servidor Exchange:

Get-Mailbox –server <<NOME SERVER>> | Get-MailboxStatistics | Sort-Object TotalItemSize –Descending | ft DisplayName,@{ expression={$_.TotalItemSize.Value.ToMB()}},ItemCount

Dessa forma abaixo, será listado apenas os usuários do database especificado:

Get-Mailbox -Database <<NOME DATABASE>> | Get-MailboxStatistics | Sort-Object TotalItemSize –Descending | ft DisplayName,@{ expression={$_.TotalItemSize.Value.ToMB()}},ItemCount

Você pode enviar para um arquivo CSV adicionando o seguinte comando no final das linhas descritas acima:

| Format-Table > c:\Mailbox.csv

Um detalhe curioso que observei nesses últimos tempos de grandes migrações. O que mais interfere no tempo da migração de uma caixa postal não é o tamanho da caixa e sim o numero de itens, por exemplo, uma caixa com 10GB de tamanho e 50.000 Itens geralmente demora menos do que uma caixa que tenha 5Gb e 100.000 Itens, isso não é uma regra, mais na sua maioria é assim que as coisas funcionam e tem lógica, mais não vamos discutir lógica agora, se alguém quiser discutir sobre isso deixe seu questionamento nas perguntas que discutiremos OK..

Um Abraço a todos e até a próxima....

Exchange - Repair de Corrupção do QUEUE Database (mail.que)





Nesse documento irei mostrar de forma rápida e simples como corrigir problemas de corrupção na Fila de E-mails do Exchange (Mail QUEUE):


Temos duas formas de Corrigir o problema, a primeira sendo bem agressivo e a segunda sendo mais conservadora, as duas tem o mesmo intuito ,ou seja, re-estabelecer o fluxo de e-mail:

1º) Recriando o Banco Corrompido da Queue: O problema desta ação é que você perderá os e-mails que estavam na fila, a vantagem é que o procedimento é rápido e simples:

  • Entre na pasta Queue e mova ou exclua os arquivos de .Log e o mail.que;
  • Suba o serviço de transporte que o Banco será recriado.


2º) Fazendo um repair no Database do Exchange, a vantagem aqui é que não se perde nada, porem o processo é relativamente mais demorado (O tempo vai depender do tamanho do DB e da fila)

1)Temos que ver o Status do Banco para certificar que está corrompido:

  • Entre no Exchange Powershell;
  • Vá até a pasta de Queue e execute o seguinte comando:


Eseutil /mh .\mail.que

• Veja na Linha “Status” se consta como:
 “Dirty Shutdow” (Corrompido)
 “Clean Shutdow” (Não corrompido)

2) Se constar como “Dirty Shutdow” será necessário executar uma reparação do Banco, para isso execute o seguinte comando no Powershell:

  • Eseutil /p .\mail.que


3)Exclua ou mova os arquivos de LOG;

4)Suba o serviço de transport novamente.

Default PATH da QUEUE: %ExchangeInstallPath%TransportRoles\data\Queue

Espero ter ajudado mais um pouco...

Duvidas podem deixar MSG que responderei.

Até a Proxima.....

Frozen uma Aventura congelante no Teatro







Olá pessoal, ótima dica para os pais que tem filhas ou filhos que são doidos pela animação da Disney "FROZEN UMA AVENTURA CONGELANTE", bom eu pelo menos tenho uma filha e uma sobrinha que são loucas pelos personagens e ficam cantando o dia inteiro as músicas, tanto que tive que comprar a Roupa da Elsa com peruca e tudo. kkkk...

Bom esse final de semana fomos assistir à peça que está em cartaz no Teatro Juca Chaves, com o mesmo nome do Filme, "FROZEN UMA AVENTURA CONGELANTE", fomos  meio que desconfiados pois já assisti algumas adaptações como “MOSTROS S/A NO TEATRO” que foi péssima, mais essa peça nos surpreendeu, muito bem feita, com efeitos que encantam as crianças, como por exemplo as de neve, que são bem legais, sem dizer os personagens que são muito bons, principalmente a RENA chamada SVEN que é totalmente maluca no filme e o ator incorpora essa loucura e o faz muito bem, mais enfim eu gravei a peça já que eles permitiram fazer a gravação, assim vocês podem ver e conferir um pouco da peça, mais nada como estar ao vivo no Teatro, a filmagem não nos passa nem 10% da sensação do teatro ao vivo.



Espero que todos aproveitem essa dica....

Link para o Video: http://youtu.be/8HtqbwEoIbw

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.

Listar usuários que estouraram a cota no Exchange








Chego com mais uma dica bastante útil, esse comando em Powershell irá listar todos os usuários que já estouraram a cota da sua caixa postal no Exchange.


Get-MailboxStatistics | Where {$_.StorageLimitStatus -eq "MailboxDisabled"} | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}},ItemCount,storagelimitstatus



Caso queira saber de um usuário em especifico é só adicionar –identity “NOME DO USUARIO” logo após o Get-MailboxStatistics



Qualquer duvida é só perguntar, até a próxima..

Script para excluir arquivos mais antigos que X Dias






Fala pessoal, blz???

Esse é um script bastante útil, ele deixa apenas os arquivos com menos de X Dias em determinadas pastas e subpastas, bastante útil em File Servers que possuem pastas para arquivos Temporários;

Exemplo:

e:\arquivos\TEMP7Dias
e:\arquivos\TEMP15Dias
e:\arquivos\TEMP30Dias

Essa estrutura é muito comum nas empresas possibilitando a criação de um tipo de repositório temporário para troca de arquivos entre usuários ou Departamentos.
Exemplo: O Departamento de compras precisa passar um documento para o Depto de Contabilidade, ao invés de darmos permissões na pasta dos departamentos o que diminuiria a segurança, os usuários colocariam os arquivos desejados na pasta temporária e os usuários do outro departamento pegariam esses arquivos e colocariam em outro local, o correto seria que os usuários movessem o arquivo do Local temporário, mais isso é pedir demais para a maioria dos usuários!!! Então para contornar esse problema e diminuirmos a nossa carga administrativa, criaríamos uma TASK no file Server que rodará esse script todos os dias e deixará na pasta apenas os arquivos mais novos que X dias, dependendo da política da empresa.

'-------------- INICIO DO SCRIPT -----------------------------------
' Script Manager : Marcos Valente
' Criado em : 2010
' Script para apagar arquivos mais antigos que X Dias
' Precisa ser passado as seguintes Informações:
'
' * Pasta Inicial
' * Qt de dias
'
' EX: cscript.exe C:\Scripts\DelOldFiles.vbs e:\arquivos\TEMP7Dias 7
'--------------------------------------------------------------
Set objArgs = WScript.Arguments
FolderName =objArgs(0) 'Argumento da Pasta inicial
Days=objArgs(1) 'Arqumento de dias

set fso = createobject("scripting.filesystemobject")
set folders = fso.getfolder(FolderName)
datetoday = now() 'Data Atual
newdate = dateadd("d", Days*-1, datetoday) 'Data Final
wscript.echo "Data Atual:" & now()
wscript.echo "Deletando arquivos mais antigos que:" & newdate
wscript.echo "________________________________________________"
wscript.echo ""
recurse folders
wscript.echo ""
Sub recurse( byref folders)
set subfolders = folders.subfolders
set files = folders.files
wscript.echo ""
wscript.echo "Deletando arquivos da Pasta:" & folders.path
wscript.echo "_______________________________________________"
for each file in files
if file.datelastmodified < newdate Then
wscript.echo "Deletando..... " & folders.path & "\" & file.name & " Ultima Modificação: " & file.DateLastModified
on error resume next
file.delete
end if

next
for each folder in subfolders
recurse folder
next
set subfolders = nothing
set files = nothing
end sub

'----------------------FIM DO SCRIPT ------------------------------

Espero ter ajudado mais uma vez e precisando estamos ai. Deixem suas duvidas ou se quiser alguma ajuda em alguma solução deixe sua pergunta que tentarei ajudar.

Um grande abraço a todos...

Ajudem a desenvolver o blog, clicando em nossas propagandas... Não custa nada ajudar...

Listando os usuários que possuem acesso ao WebMail (OWA) via PowerShell




Esse comando em Powershell lista os usuários que estão com acesso no WEBMAIL do Exchange em um Database especifico:

Get-MailBoxstatistics -Database <<Databasename>>  | Get-CASMailbox |where {$_.owaenabled -eq $TRUE} | FT displayname


Caso precise fazer um search em todos os databases basta remover o Get-mailboxStatistics, isso retornará todos os usuários do Exchange que estão com o Webmail ativo.


Get-CASMailbox |where {$_.owaenabled -eq $TRUE} | FT displayname


Para inverter e ver quem está com o Webmail desativado basta trocar o $TRUE por $FALSE.