Powershell交换图表

时间:2014-03-17 10:57:58

标签: powershell exchange-server

我创建了一个脚本来从Exchange DB中提取数据(Displayname& MAilbox Size)。 脚本运行但我不能让脚本在desc中显示基于大小使用的前50个。订购。 初始脚本运行,并给我一个只有大小的图表,但似乎用户名没有正确显示。

也许有人可以协助看看我犯错误的地方吗?

 [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization") 

$Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart 
$Chart.Width = 800  
$Chart.Height = 700  
$Chart.Left = 40  
$Chart.Top = 30 

        $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea  
        $Chart.ChartAreas.Add($ChartArea) 

[void]$Chart.Titles.Add("Top Mailboxes by Size - " + (Get-Date -Format D))  
$ChartArea.AxisX.Title = "Users" 
$ChartArea.AxisX.Interval = 1 

        $ChartArea.AxisY.Title = "Mailbox Size (GB)" 

$script:WarningPreference = "SilentlyContinue" 


$UserMailboxStats = Get-MailboxServer -Identity VPD-JHB-EXC004 |Get-Mailbox -RecipientTypeDetails UserMailbox | Get-MailboxStatistics| Sort-Object TotalItemSize -Descending 
$UserMailboxStats | Add-Member -MemberType ScriptProperty -Name TotalItemSizeInBytes -Value {$this.TotalItemSize -replace "(.*\()|,| [a-z]*\)", ""}
$UserMailboxStats | Select-Object DisplayName, @{Name="TotalItemSize (GB)"; Expression={[math]::Round($_.TotalItemSizeInBytes/1GB,2)}} -First $topXmailboxes

        $users = @(foreach($mailbox in $UserMailboxStats){$mailbox.DisplayName}) 
        $sizes = @(foreach($mailbox in $UserMailboxStats){[Double]$mailbox.TotalItemSizeInBytes/1GB}) 


 write-host

[void]$Chart.Series.Add("Data") 
                $Chart.Series["Data"].Points.DataBindXY($users, $sizes) 

$Chart.Series["Data"]["DrawingStyle"] = "Cylinder" 

                    $Chart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor  
                                    [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left  
    $Form = New-Object Windows.Forms.Form  
        $Form.Text = "PowerShell Chart"  
            $Form.Width = 900  
                $Form.Height = 800  
                    $Form.controls.add($Chart) 

$path = Split-Path -parent $MyInvocation.MyCommand.Definition 
$Chart.SaveImage($path + "c:\ScheduledScripts\test.png", "PNG") 

$Form.Add_Shown({$Form.Activate()})  
$Form.ShowDialog()

0 个答案:

没有答案