# PRTG MBasize # # Simple PRTG Sensor to get mailbox statistics # # Load last 5 Minutes from Messagestatistics and result as XML für PRTG # http://www.paessler.com/manuals/prtg/additional_sensor_types.htm # http://www.paessler.com/manuals/prtg/exe_script_advanced_sensor.htm # # 32bit PowerShell !!! # Set-ExecutionPolicy -ExecutionPolicy remotesigned # # Send mailbox names as arguments as delimited list # # # 20121210 Ver1.0 Initial Version based on a exmetric # 20121217 Ver1.1 Ersetze [int] durch [long] write-host "Start PRTG Sensor" [string]$exchangeuri = "http://nawex001.netatwork.de/PowerShell" [string]$message ="Start:" $error.clear() if ($args.count -eq 0) { write-host "Parametercheck: no argument given Exit" [string]$message ="No mailbox in arguments" } else { write-host "Parametercheck: Total argument" + $args.count if (!(Get-Command "Get-OrganizationConfig" -errorAction SilentlyContinue)) { $error.removerange(0,1) # remove last error write-host " Creating Exchange Remote Session" $session = new-pssession ` -ConfigurationName "Microsoft.Exchange" ` -ConnectionUri $exchangeuri ` -Authentication Kerberos write-host " Import Exchange Remote Session Commandlets" import-pssession -Session $session -AllowClobber | out-null } Set-AdServerSettings -ViewEntireForest $true $result="`r`n" foreach ($mailbox in $args){# write-host "Processing Mailbox:$mailbox" $mbstat = get-mailboxstatistics -identity $mailbox if ($mbstat -eq $null) { write-host " No statistic found für Mailbox:" + $mailbox $message+= $mailbox+":null:" } else { write-host " Statistic found für Mailbox:" + $mailbox $size = ($mbstat).totalitemsize # remote PowerShell delivers that a s a string write-host " TotalItemSize:" + $size if ($size -match "^.* \((.*) bytes\)$"){ $sizeinMB = [math]::Truncate(([long]$Matches[1])/1MB) write-host " TotalItemSizeMB:" + $sizeinMB $result+=" `r`n" $result+=" "+$mailbox+"`r`n" # remote PowerShell sends a string instead of gb value so converting back $result+=" "+([long](($size.split("(")[0]).replace(" ","")/1MB))+"`r`n" $result+=" MB`r`n" $result+=" Absolute`r`n" $result+=" `r`n" } else { write-host " TotalItemSize: Not matching REGEX !" $message+= $mailbox+":"+$size+":nomatch:" } } } $result+=" "+$message+"`r`n" $result+="" remove-pssession -session $session } write-host "End: ExitCode "$error.count Write-host "Sending Result to output pipeline" $result if ($error) { #write-host "Found Errors" EXIT 1 }