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()