Sie sind auf Seite 1von 4

# The first part should be executed in Exchange Managment Shell (EMS) on Exchange

Server
#
# QuotaList.csv file contains results
#
Get-Mailbox -Filter "RecipientTypeDetails -eq 'UserMailbox'" -ResultSize Unlimit
ed | % {
if ( ($stat = Get-MailboxStatistics $_) ) {
$userobj = [pscustomobject]@{
UserPrincipalName=$_.UserPrincipalName;
DisplayName=$_.DisplayName;
PrimarySmtpAddress=$_.PrimarySmtpAddress;
TotalItemSize=$stat.TotalItemSize.Value.ToBytes();
UseDatabaseQuotaDefaults=$_.UseDatabaseQuotaDefaults
}
if ($_.UseDatabaseQuotaDefaults) {
$userobj | Add-Member @{
IssueWarningQuota = if ($stat.DatabaseIssueWarni
ngQuota.IsUnlimited) {$([int64]::MaxValue)} else {$stat.DatabaseIssueWarningQuot
a.Value.ToBytes()};
ProhibitSendQuota = if ($stat.DatabaseProhibitSe
ndQuota.IsUnlimited) {$([int64]::MaxValue)} else {$stat.DatabaseProhibitSendQuot
a.Value.ToBytes()};
ProhibitSendReceiveQuota = if ($stat.DatabasePro
hibitSendReceiveQuota.IsUnlimited) {$([int64]::MaxValue)} else {$stat.DatabasePr
ohibitSendReceiveQuota.Value.ToBytes()}
} -PassThru
} else {
$userobj | Add-Member @{
IssueWarningQuota = if ($_.IssueWarningQuota.IsU
nlimited) {$([int64]::MaxValue)} else {$_.IssueWarningQuota.Value.ToBytes()};
ProhibitSendQuota = if ($_.ProhibitSendQuota.IsU
nlimited) {$([int64]::MaxValue)} else {$_.ProhibitSendQuota.Value.ToBytes()};
ProhibitSendReceiveQuota = if ($_.ProhibitSendRe
ceiveQuota.IsUnlimited) {$([int64]::MaxValue)} else {$_.ProhibitSendReceiveQuota
.Value.ToBytes()}
} -PassThru
}
}
} | % { Add-Member -InputObject $_ @{
QuotaStatus = if ($_.TotalItemSize -lt $_.IssueWarningQuota) {"BelowLimi
t"}
elseif ($_.TotalItemSize -ge $_.IssueWarningQuota -and $_.TotalI
temSize -lt $_.ProhibitSendQuota) {"Warning"}
elseif ($_.TotalItemSize -ge $_.ProhibitSendQuota -and $_.TotalI
temSize -lt $_.ProhibitSendReceiveQuota) {"BlockSend"}
elseif ($_.TotalItemSize -ge $_.ProhibitSendReceiveQuota) {"Bloc
kSendReceive"}
} -PassThru
} | Export-Csv -Path .\QuotaList.csv -Encoding Unicode -NoTypeInformatio
n -Delimiter ";"
# End the first part
----------------------------# The second part should be executed on any system with Excel 2013 and Powershel

l 3 (and above)
#
# QuotaStatus.xlsx is result report
#
$excel
$excel.visible
$excel.displayAlerts

= New-Object -comObject excel.application


= $true # or = $false
= $false

$WorkBook = $excel.Workbooks.Add()
$WorkSheet = $WorkBook.Sheets.Item(1)
$WorkSheet.Select()
$WorkSheet.Name = "Quotas"
$WorkSheet.Range("A1").Select()
$qlist = Get-Content .\QuotaList.csv -Raw
[Windows.Clipboard]::setText($qlist)
$WorkSheet.Paste()
$excel.Selection.TextToColumns($excel.Selection,
[Microsoft.Office.Interop.Excel.XlTextParsingType]::xlDelimited,
[Microsoft.Office.Interop.Excel.XlTextQualifier]::xlTextQualifie
rDoubleQuote,
$false,$false,$true)
$WorkSheet.Range("A1").Select()
$WorkSheet.Range("A1").CurrentRegion.Select()
$table = $WorkSheet.ListObjects.Add(
[Microsoft.Office.Interop.Excel.XlListObjectSourceType]::xlSrcRange,
$excel.Selection, $Null,
[Microsoft.Office.Interop.Excel.XlYesNoGuess]::xlYes)
$table.Name = "1"
#$table.TableStyle = "TableStyleMedium7"
$rows = $WorkSheet.Range("I2").CurrentRegion.Rows.Count
$WorkSheet.Range("I2:I$rows").Select()
$FormatCondition = $excel.Selection.FormatConditions.Add( 2, $Null, '=$I2="Block
SendReceive"', $Null)
$FormatCondition.SetFirstPriority()
$FormatCondition.StopIfTrue = $true
$FormatCondition.Interior.PatternColorIndex = -4105
$FormatCondition.Interior.ColorIndex = 3
$FormatCondition = $excel.Selection.FormatConditions.Add( 2, $Null, '=$I2="Block
Send"', $Null)
$FormatCondition.SetFirstPriority()
$FormatCondition.StopIfTrue = $true
$FormatCondition.Interior.PatternColorIndex = -4105
$FormatCondition.Interior.ColorIndex = 6
$FormatCondition = $excel.Selection.FormatConditions.Add( 2, $Null, '=$I2="Warni
ng"', $Null)
$FormatCondition.SetFirstPriority()
$FormatCondition.StopIfTrue = $true
$FormatCondition.Interior.PatternColorIndex = -4105
$FormatCondition.Interior.ThemeColor = 4
$FormatCondition.Interior.TintAndShade = 0.599963377788629

$FormatCondition = $excel.Selection.FormatConditions.Add( 2, $Null, '=$I2="Below


Limit"', $Null)
$FormatCondition.SetFirstPriority()
$FormatCondition.StopIfTrue = $true
$FormatCondition.Interior.PatternColorIndex = -4105
$FormatCondition.Interior.ThemeColor = 3
$FormatCondition.Interior.TintAndShade = -9.99481185338908E-02
$WorkSheet2 = $WorkBook.Sheets.Add()
$WorkSheet2.Name = "Report"
$PivotTable =
$WorkBook.PivotCaches().Create(
[Microsoft.Office.Interop.Excel.XlPivotTableSourceType]::xlDatabase,
"1",
[Microsoft.Office.Interop.Excel.xlPivotTableVersionList]::xlPivotTableVe
rsion15).CreatePivotTable(
"Report!R3C1",
"1",
[Microsoft.Office.Interop.Excel.xlPivotTableVersionList]::xlPivo
tTableVersion15)
$PivotTable.PivotFields("QuotaStatus").Orientation = [Microsoft.Office.Interop.E
xcel.XlPivotFieldOrientation]::xlRowField
$PivotTable.PivotFields("QuotaStatus").Position = 1
$PivotTable.PivotFields("DisplayName").Orientation = [Microsoft.Office.Interop.E
xcel.XlPivotFieldOrientation]::xlRowField
$PivotTable.PivotFields("DisplayName").Position = 2
$a=$PivotTable.AddDataField( $PivotTable.PivotFields("DisplayName"),
" DisplayName",
[Microsoft.Office.Interop.Excel.XlConsolidationFunction]
::xlCount)
$a=$PivotTable.AddDataField($PivotTable.PivotFields("TotalItemSize"),
" TotalItemSize",
[Microsoft.Office.Interop.Excel.XlConsolidationFunction]
::xlSum)
$PivotTable.PivotFields(" TotalItemSize").NumberFormat = "#,##0"

$slicer = $WorkBook.SlicerCaches.Add2($PivotTable,"QuotaStatus").Slicers.Add($Wo
rkSheet2)
#$WorkSheet2, $Null, "QuotaStatus", "QuotaStatus", 200, 150, 144, 198.75)
$slicer.Top=12
$slicer.Height =120
$slicer.Left=450
#$WorkSheet2.Range("B6").Select()
$chart = $WorkSheet2.Shapes.AddChart2(201, [Microsoft.Office.Interop.Excel.XlCha
rtType]::xlColumnClustered,13,150,360,220)
$chart.Chart.SetSourceData($WorkSheet2.Range('Report!$A$3:$B$8'),[Microsoft.Offi
ce.Interop.Excel.XlRowCol]::xlColumns)
$WorkBook.ApplyTheme("C:\Program Files (x86)\Microsoft Office\Document Themes 15

\Facet.thmx")
#$WorkBook.Theme.ThemeColorScheme.Load("C:\Program Files (x86)\Microsoft Office\
Document Themes 15\Theme Colors\Integral.xml")
$WorkBook.SaveAs(".\QuotaStatus.xlsx", [Microsoft.Office.Interop.Excel.XlFileFor
mat ]::xlOpenXMLWorkbook)
$excel.quit()

Das könnte Ihnen auch gefallen