26 Eylül 2015 Cumartesi

CPU Ussage with Powershell ( Graph)



Herkese Merhaba ,

Yaptığım çalışmada Process lerimizde açık uygulamalar listemizde CPU yu en çok kullanan uygulamaların son 5 ini sıralıyıp bunu görselleştireceğiz .

Scriptimize geçmeden önce , açık uygulama listemizi görelim (Resim-1) :

Resim-1


Scriptimiz ve Ekran görüntümüz : 


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



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

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



$CPUPercent = @{
  Name = 'CPUPercent'
  Expression = {
    $TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
    [Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
  }
}


 $CPU = Get-Process | Select-Object -Property Name, $CPUPercent | Sort-Object -Property CPUPercent -Descending | Select-Object -First 4 



$ProcNames = @(foreach($CPUs in $CPU){$CPUs.Name } )
$WS = @(foreach($CPUs in $CPU){ $CPUS.CPUPercent/ 1MB })

[void]$Chart.Series.Add("Data") 
$Chart.Series["Data"].Points.DataBindXY($ProcNames, $WS)


$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 = "CPU Kullanımı" 
$Form.Width = 600 
$Form.Height = 600 
$Form.controls.add($Chart) 
$Form.Add_Shown({$Form.Activate()}) 


$SaveButton = New-Object Windows.Forms.Button 
$SaveButton.Text = "Save" 
$SaveButton.Top = 500 
$SaveButton.Left = 450 
$SaveButton.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right 
$SaveButton.add_click({$Chart.SaveImage($Env:USERPROFILE + "\Desktop\Chart.png", "PNG") 


[System.Windows.Forms.MessageBox]::Show("Ekran Görüntüsü Masaüstüne Kaydedilmiştir . ")
 })
$Form.controls.add($SaveButton)







$Chart.Series["Data"].Sort([System.Windows.Forms.DataVisualization.Charting.PointSortOrder]::Descending, "Y")

$ChartArea.AxisX.Title = "Açık Uygulamalar" 
$ChartArea.AxisY.Title = "Çalışan Uygulamalar (MB)"


$maxValuePoint = $Chart.Series["Data"].Points.FindMaxByValue() 
$maxValuePoint.Color = [System.Drawing.Color]::Red

$minValuePoint = $Chart.Series["Data"].Points.FindMinByValue() 
$minValuePoint.Color = [System.Drawing.Color]::Green


$Chart.Series["Data"]["DrawingStyle"] = "Cylinder"
$Form.ShowDialog()






Hiç yorum yok:

Yorum Gönder