terça-feira, 2 de junho de 2015

Exchange - Monitorar caixas postais Exchange e gravar no SQL Server

É sempre importante manter um histórico da quantidade e do tamanho das caixas postais.

O script powershell deve ser executado no snap-in do Exchange e armazenará o nome da base, o tamanho, o espaço livre, a data, o nome do servidor e a quantidade de emails no servidor de banco de dados.

Para isto é necessário criar uma tabela no banco de dados com o script abaixo:

CREATE TABLE [dbo].[indicadorExchange](
[base] [varchar](50) NULL,
[tamanho] [numeric](18, 2) NULL,
[livre] [numeric](18, 2) NULL,
[data] [date] NULL,
[server] [varchar](50) NULL,
[mailbox] [int] NULL
) ON [PRIMARY]

GO

Criada a tabela  basta executar o script abaixo com um usuário que tenha acesso ao Exchange e acesso à tabela que foi criada.

add-pssnapin Microsoft.Exchange.Management.PowerShell.SnapIn

$conn = New-Object System.Data.SqlClient.SqlConnection(“Data Source=servidorSQL\instancia; Initial Catalog=nomeDoBancoDeDados; Integrated Security=SSPI”)
$conn.Open()
$cmd = $conn.CreateCommand()
$data = Get-Date -format yyyy/MM/dd


$database = Get-MailboxDatabase -IncludePreExchange2013 -status
$database = $database += Get-PublicFolderDatabase -Status


foreach($db in $database) {

$nome = $db.Name
$tamanho = $db.DatabaseSize.ToMB()
$livre = $db.AvailableNewMailboxSpace.ToMB()
$server = $db.Server
if ($nome -like 'PUBLIC*'){
$emails = "0"   
} else{
$emails = (Get-Mailbox -ResultSize Unlimited -Database $nome).count
}

#write-host $nome - $tamanho - $livre
$cmd.CommandText =“insert into indicadorExchange values ('$nome', '$tamanho', '$livre', '$data', '$server', '$emails' );” + $cmd.CommandText
#write-host $nome, $tamanho, $livre, $data, $server, $emails
}

$data = $cmd.ExecuteReader()

$conn.Close()


Nenhum comentário:

Postar um comentário