Tags

Howto (51) Free Software (35) Powershell (33) Windows Server (23) AD (16) Hyper-V (16) Exchange (13) Office (13) Group Policy (10) Windows Server 2012 (9) Scripts (7) Symantec BE (5) Windows 8 (5) Cisco (4) TMG (4) Terminal Server (4) Cluster (3) HP (3) RDS (3) UAG (3) Citrix (2) DC (2) DNS (2) IE10 (2) OpenID (2) PKI (2) SCVMM (2) Windows Live (2) iLO (2) Backup (1) DPM (1) Fileserver (1) IE (1) SQL; DPM (1) Security (1) Sharepoint (1) Switch (1) VMWare (1) Veeam (1)

dinsdag 11 oktober 2011

Generate Exchange Environment Reports using Powershell

Wat een groot gemis was met de komst van Exchange 2007 was het feit dat je in de GUI niet meer te zien kreeg hoe groot een bepaalde mailbox was. Om dat toch te kunnen monitoren heb ik een batchfile geschreven die gescheduled stond en die vervolgens  een bepaald powershell script uitvoerde.

Het is niet geweldig gedocumenteerd maar hier de batch en het powershell script:

@echo off
h:
cd\
cd psscripts
ren mailboxinfo.html mailboxinfo1.html
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'h:\psscripts\mailboxreport.ps1'"
exit
start iexplore "h:\psscripts\mailboxinfo.html"
exit



# S.Salfischberger 09-03-2009
# Hiermee genereer je een rapport per Exchange database

# in HTML formaat van de mailboxen groter dan 200MB en
# dat wordt dan verstuurd naar het aangegeven email adres.

function OutputHTML
{
param([string]$Naam, [string]$Database)
$BodyStyle = Get-Content -Path "$Locatie\salfischbergerit.css"
$BodyStyle = ""
$BodyStyle += "$Naam Mailbox Report"
#$BodyStyle = $BodyStyle + ""

$MBXOutput = Get-MailboxStatistics -Database "$MailServer\$Database" |where {$_.TotalItemSize –gt 200MB} | sort TotalItemSize -descending | ConvertTo-HTML DisplayName,ItemCount,@{label="Mailbox grootte (MB)";expression={$_.TotalItemSize.Value.ToMB()}} -Title "Mailbox Overview" -Head $BodyStyle$MBXOutput = $MBXOutput -replace "","
$Naam mailbox rapportage $($now) "
$MBXOutput = $MBXOutput -replace "","Weergave: mailboxen > 200MB"
$MBXOutput | Out-File $Locatie\MBReportDB_$Naam.html

$global:att += new-object Net.Mail.Attachment("$Locatie\MBReportDB_$Naam.html")
$msg.Attachments.Add($global:att[$global:att.length - 1])
}


$Now=Get-Date
$global:att = @()

$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($MailServer)
$msg.Body = "..."


####### AANPASBAAR #######
$MailServer = "EX01"
$msg.From = s.salfischberger@.nl
$msg.To.Add(
s.salfischberger@.nl)
$msg.Subject = "Mailbox Report"

$Locatie = "H:\PSScripts"
OutputHTML "Spam" "Spam Database"
OutputHTML "Mailbox1" "Mailbox1 Database"
OutputHTML "Mailbox2" "Mailbox2 Database"

####### AANPASBAAR #######

$smtp.Send($msg)
for($x = 0; $x -lt $global:att.length; $x++) {
 $global:att[$x].Dispose()

}



Met de komst van Exchange 2010 kwam ik erachter dat bovenstaand script niet meer werkt. Met een paar kleine aanpassingen kun je het echter zo weer werkend krijgen.

Ik heb ondertussen ook een prachtig ander script gevonden dat een overzicht geeft van je Exchange omgeving:





Zie onderstaand blog:

http://www.stevieg.org/2011/06/exchange-environment-report/

Geen opmerkingen:

Een reactie posten