É 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()