Blog Post

PowerShellGUI Tools – Disk,Memory and Process – Modules

,

I’ve created a script which gives details of Disk, Memory and Process and its represented graphically.

Here, the scripts are enclosed in module. At its simplest, a module is just a PowerShell script, contained in a file with a .PSM1 extension

A module is some chunk of code that you can import into PowerShell. Once imported, any cmdlets, scripts, or providers can be accessed.

Installation of a module is now very simple. download and save the file c:\PowerShellGUI.psm1

This PowerShellGUI module consists of

  1. Get-DiskSpaceGUI
  2. Get-MemoryGUI
  3. Get-ProcessGUI

Now we just need to import our module. The Scope is limited to session. If you want to load automatically then you need to create Profile (http://technet.microsoft.com/en-us/library/ff461033.aspx)

You can save the file in a default module path that can be identified using environmental variable.

PS:\>$ENV:PSMODULEPATH

There are many ways to load a module. The preferred way is to create folder and save the Module in that folder

To import and loading a module as follows.

  1. Download the module code
  2. Create a folder PowerShellGUI (Same name as that of a Module name) file at any of the below location %windir%\System32\WindowsPowerShell\v1.0\Modules OR %UserProfile%\Documents\WindowsPowerShell\Modules (preferred)
  3. Save the PowerShellGUI.psm1 %UserProfile%\Documents\WindowsPowerShell\Modules\PowerShellGUI\ (preferred)
  4. Import-Module PowershellGUI
  5. This will import the module and functions into powershell
    • Get-Module  -ListAvailable

    This will list down all available modules in powershell

    • Get-Command -Module PowerShellGUI
  6. Once you are done with step 1, 2 and 3 open a powershell window and run below commands.
  7. PS:\>Import-Module -Name PowershellGUI
  8.  This will import the module and functions into powershell
  9. PS:\>Get-Module  -ListAvailable
  10.  This will list down all available modules in powershell
  11. Get-Command -Module PowerShellGUI
OR

Save the module  to C:\PowershellGUI.psm1

  1. PS:\> Import-Module -Name C:\PowerShellGUI.psm1
  2.  PS:\>Get-Module PowerShellGUI

Download the code PowerShellGUI.PSM1 from the URL

 

PS:\>Get-Command -Module PowershellGUI

Ouptut:-

Remove Module:-

PS:\> Remove-Module -Name PowershellGUI

Copy and paste the below content in C:\PowerShellGUI.psm1

#########################################################################################################

Function Get-DiskSpaceGUI

{

#========================================================================

# Generated On: 01/31/2014

# Generated By: Prashanth Jayaram

# Version     : 1.1

# Change Desc : Tab Index fix and column names are changed, Form Size correction , Accept default machine name

#========================================================================

function OnApplicationLoad {

if([Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms.DataVisualization”) -eq $null)

{

#Microsoft Chart Controls are not installed

[void][reflection.assembly]::Load(“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][System.Windows.Forms.MessageBox]::Show(“Microsoft Chart Controls for Microsoft .NET 3.5 Framework is required”,”Microsoft Chart Controls Required”)

#Open the URL

[System.Diagnostics.Process]::Start(“http://www.microsoft.com/downloads/en/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=en”);

return $false

}

return $true #return true for success or false for failure

}

function OnApplicationExit {

#Note: This function is not called in Projects

#Note: This function runs after the form is closed

#TODO: Add custom code to clean up and unload snapins when the application exits

$script:ExitCode = 0 #Set the exit code for the Packager

}

#endregion Application Functions

#———————————————-

# Generated Form Function

#———————————————-

function Call-SystemInformation_pff {

#———————————————-

#region Import the Assemblies

#———————————————-

[void][reflection.assembly]::Load(“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”)

[void][reflection.assembly]::Load(“mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″)

#endregion Import Assemblies

#———————————————-

#region Generated Form Objects

#———————————————-

[System.Windows.Forms.Application]::EnableVisualStyles()

$formDiskSpacePieChart = New-Object System.Windows.Forms.Form

$dataGrid1 = New-Object System.Windows.Forms.DataGrid

$chart1 = New-Object System.Windows.Forms.DataVisualization.Charting.Chart

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$btnRefresh = New-Object System.Windows.Forms.Button

$btngetdata=New-Object System.Windows.Forms.Button

$rtbPerfData = New-Object System.Windows.Forms.RichTextBox

$lblServicePack = New-Object System.Windows.Forms.Label

$lblDBName= New-Object System.Windows.Forms.Label

$lblOS = New-Object System.Windows.Forms.Label

$statusBar1 = New-Object System.Windows.Forms.StatusBar

$btnClose = New-Object System.Windows.Forms.Button

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$txtComputerName = New-Object System.Windows.Forms.TextBox

$dataGrid1 = New-Object System.Windows.Forms.DataGrid

function Load-Chart

{

Param( #$XPoints, $YPoints, $XTitle, $YTitle, $Title, $ChartStyle)

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2,Mandatory=$true)]

$XPoints

,

[Parameter(Position=3,Mandatory=$true)]

$YPoints

,

[Parameter(Position=4,Mandatory=$false)]

[string]$XTitle

,

[Parameter(Position=5,Mandatory=$false)]

[string]$YTitle

,

[Parameter(Position=6,Mandatory=$false)]

[string]$Title

,

[Parameter(Position=7,Mandatory=$false)]

[System.Windows.Forms.DataVisualization.Charting.SeriesChartType]$ChartType

,

[Parameter(Position=8,Mandatory=$false)]

$SeriesIndex = 0

,

[Parameter(Position=9,Mandatory=$false)]

$TitleIndex = 0,

[switch]$Append)

$ChartAreaIndex = 0

if($Append)

{

$name = “ChartArea ” + ($ChartControl.ChartAreas.Count + 1).ToString();

$ChartArea = $ChartControl.ChartAreas.Add($name)

$ChartAreaIndex = $ChartControl.ChartAreas.Count – 1

$name = “Series ” + ($ChartControl.Series.Count + 1).ToString();

$Series = $ChartControl.Series.Add($name)

$SeriesIndex = $ChartControl.Series.Count – 1

$Series.ChartArea = $ChartArea.Name

if($Title)

{

$name = “Title ” + ($ChartControl.Titles.Count + 1).ToString();

$TitleObj = $ChartControl.Titles.Add($name)

$TitleIndex = $ChartControl.Titles.Count – 1

$TitleObj.DockedToChartArea = $ChartArea.Name

$TitleObj.IsDockedInsideChartArea = $false

}

}

else

{

if($ChartControl.ChartAreas.Count -eq  0)

{

$name = “ChartArea ” + ($ChartControl.ChartAreas.Count + 1).ToString();

[void]$ChartControl.ChartAreas.Add($name)

$ChartAreaIndex = $ChartControl.ChartAreas.Count – 1

}

if($ChartControl.Series.Count -eq 0)

{

$name = “Series ” + ($ChartControl.Series.Count + 1).ToString();

$Series = $ChartControl.Series.Add($name)

$SeriesIndex = $ChartControl.Series.Count – 1

$Series.ChartArea = $ChartControl.ChartAreas[0].Name

}

}

$Series = $ChartControl.Series[$SeriesIndex]

$ChartArea = $ChartControl.ChartAreas[$Series.ChartArea]

$Series.Points.Clear()

if($Title)

{

if($ChartControl.Titles.Count -eq 0)

{

$name = “Title ” + ($ChartControl.Titles.Count + 1).ToString();

[void]$ChartControl.Titles.Add($name)

$TitleIndex = $ChartControl.Titles.Count – 1

$TitleObj.DockedToChartArea = $ChartArea.Name

$TitleObj.IsDockedInsideChartArea = $false

}

$ChartControl.Titles[$TitleIndex].Text = $Title

}

if($ChartType)

{

$Series.ChartType = $ChartType

}

if($XTitle)

{

$ChartArea.AxisX.Title = $XTitle

}

if($YTitle)

{

$ChartArea.AxisY.Title = $YTitle

}

if($XPoints -isnot [Array] -or $XPoints -isnot [System.Collections.IEnumerable])

{

$array = New-Object System.Collections.ArrayList

$array.Add($XPoints)

$XPoints = $array

}

if($YPoints -isnot [Array] -or $YPoints -isnot [System.Collections.IEnumerable])

{

$array = New-Object System.Collections.ArrayList

$array.Add($YPoints)

$YPoints = $array

}

$Series.Points.DataBindXY($XPoints, $YPoints)

}

function Clear-Chart

{

Param (

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2, Mandatory=$false)]

[Switch]$LeaveSingleChart

)

$count = 0

if($LeaveSingleChart)

{

$count = 1

}

while($ChartControl.Series.Count -gt $count)

{

$ChartControl.Series.RemoveAt($ChartControl.Series.Count – 1)

}

while($ChartControl.ChartAreas.Count -gt $count)

{

$ChartControl.ChartAreas.RemoveAt($ChartControl.ChartAreas.Count – 1)

}

while($ChartControl.Titles.Count -gt $count)

{

$ChartControl.Titles.RemoveAt($ChartControl.Titles.Count – 1)

}

if($ChartControl.Series.Count -gt 0)

{

$ChartControl.Series[0].Points.Clear()

}

}

#endregion

<#

$FormEvent_Load={

#TODO: Initialize Form Controls here

Load-PieChart

}

#>

function Load-PieChart

{

param(

[string[]]$servers = “$ENV:COMPUTERNAME”

)

foreach ($server in $servers) {

#Get Disk space using WMI and make sure it is an array

$Disks = @(Get-WMIObject -Namespace “root\cimv2″ -class Win32_LogicalDisk -Impersonation 3 -ComputerName $server -filter “DriveType=3″ )

#Remove all the current charts

Clear-Chart $chart1

#Loop through each drive

foreach($disk in $Disks)

{

$UsedSpace =(($disk.size – $disk.freespace)/1gb)

$FreeSpace = ($disk.freespace/1gb)

#Load a Chart for each Drive

Load-Chart $chart1 -XPoints (“Used ({0:N1} GB)” -f $UsedSpace), (“Free Space ({0:N1} GB)” -f $FreeSpace) -YPoints $UsedSpace, $FreeSpace -ChartType “Bar” -Title (“Volume: {0} ({1:N1} GB)” -f $disk.deviceID, ($disk.size/1gb) ) -Append

}

#Set Custom Style

foreach ($Series in $chart1.Series)

{

$Series.CustomProperties = “PieDrawingStyle=Concave”

}

}

}

function Get-DiskDetails

{

param(

[string[]]$ComputerName = $env:COMPUTERNAME

)

$Object =@()

$array = New-Object System.Collections.ArrayList

foreach ($Computer in $ComputerName) {

if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {

Write-Verbose “$Computer online”

$D=Get-WmiObject win32_logicalDisk -ComputerName $Computer  |where {$_.DriveType -eq 3}|select-object DeviceID, VolumeName,FreeSpace,Size

foreach($disk in $D)

{

$TotalSize = $Disk.Size /1Gb -as [int]

$InUseSize = ($Disk.Size /1Gb -as [int]) – ($Disk.Freespace / 1Gb -as [int])

$FreeSpaceGB = $Disk.Freespace / 1Gb -as [int]

$FreeSpacePer = ((($Disk.Freespace /1Gb -as [float]) / ($Disk.Size / 1Gb -as [float]))*100) -as [int]

$Object += New-Object PSObject -Property @{

Name= $Computer;

Drive= $Disk.DeviceID;

Label=$Disk.VolumeName;

SizeGB=$TotalSize;

UseGB=$InUseSize;

FreeGB=$FreeSpaceGB;

‘% Free’ =$FreeSpacePer;

}

}

}

}

$array.AddRange($Object)

$dataGrid1.DataSource = $array

}

$GetData={

if ($txtComputerName.text -eq ”)

{

$txtComputerName.text =$env:COMPUTERNAME

}

$statusBar1.text=”Getting Disk Space Details Data..please wait”

if(Test-Connection -ComputerName $txtComputerName.text -Count 1 -ea 0) {

$data=Get-DiskDetails -ComputerName $txtComputerName.text | Out-String

Load-PieChart -servers $txtComputerName.text

}

else

{

[Windows.Forms.MessageBox]::Show(“Not able connect to the server”, [Windows.Forms.MessageBoxIcon]::Information)

}

#$rtbPerfData.text=$data.Trim()

$errorActionPreference=”Continue”

$statusBar1.Text=”Ready”

}

$Close={

$formDiskSpacePieChart.close()

}

# –End User Generated Script–

#———————————————-

# Generated Events

#———————————————-

$Form_StateCorrection_Load=

{

#Correct the initial state of the form to prevent the .Net maximized form issue

$formDiskSpacePieChart.WindowState = $InitialFormWindowState

}

#———————————————-

#region Generated Form Code

#———————————————-

#

# formDiskSpacePieChart

#

$formDiskSpacePieChart.Controls.Add($buttonSave)

$formDiskSpacePieChart.Controls.Add($chart1)

$formDiskSpacePieChart.ClientSize = New-Object System.Drawing.Size(513,540)

$formDiskSpacePieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$formDiskSpacePieChart.MinimumSize = New-Object System.Drawing.Size(300,300)

$formDiskSpacePieChart.Name = “formDiskSpacePieChart”

$formDiskSpacePieChart.Text = “Disk Space Pie Chart”

$formDiskSpacePieChart.Controls.Add($btnRefresh)

$formDiskSpacePieChart.Controls.Add($lblServicePack)

$formDiskSpacePieChart.Controls.Add($lblOS)

$formDiskSpacePieChart.Controls.Add($lblDBName)

$formDiskSpacePieChart.Controls.Add($statusBar1)

$formDiskSpacePieChart.Controls.Add($btnClose)

$formDiskSpacePieChart.Controls.Add($txtComputerName)

$formDiskSpacePieChart.ClientSize = New-Object System.Drawing.Size(630,600)

$formDiskSpacePieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$formDiskSpacePieChart.Name = “form1″

$formDiskSpacePieChart.Text = “Disk Space Usage Information”

$formDiskSpacePieChart.add_Load($PopulateList)

$formDiskSpacePieChart.add_Load($FormEvent_Load)

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Width = 600

$System_Drawing_Size.Height = 125

$dataGrid1.Size = $System_Drawing_Size

$dataGrid1.DataBindings.DefaultDataSourceUpdateMode = 0

$dataGrid1.HeaderForeColor = [System.Drawing.Color]::FromArgb(255,0,0,0)

$dataGrid1.Name = “dataGrid1″

$dataGrid1.DataMember = “”

$dataGrid1.TabIndex = 0

$System_Drawing_Point = New-Object System.Drawing.Point

$System_Drawing_Point.X =13

$System_Drawing_Point.Y = 62

$dataGrid1.Location = $System_Drawing_Point

$formDiskSpacePieChart.Controls.Add($dataGrid1)

$dataGrid1.CaptionText=’Disk Details’

#

# btnRefresh

#

$btnRefresh.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$btnRefresh.Enabled = $TRUE

$btnRefresh.Location = New-Object System.Drawing.Point(230,35)

$btnRefresh.Name = “btnRefresh”

$btnRefresh.Size = New-Object System.Drawing.Size(95,20)

$btnRefresh.TabIndex = 2

$btnRefresh.Text = “GetDiskSpace”

$btnRefresh.UseVisualStyleBackColor = $True

$btnRefresh.add_Click($GetData)

#

#

# btnClose

#

$btnClose.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$btngetdata.Enabled = $TRUE

$btnClose.Location = New-Object System.Drawing.Point(373,35)

$btnClose.Name = “btnClose”

$btnClose.Size = New-Object System.Drawing.Size(95,20)

$btnClose.TabIndex = 3

$btnClose.Text = “Close”

$btnClose.UseVisualStyleBackColor = $True

$btnClose.add_Click($Close)

#

# lblDBName

#

$lblDBName.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblDBName.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblDBName.Location = New-Object System.Drawing.Point(13,10)

$lblDBName.Name = “lblDBName”

$lblDBName.Size = New-Object System.Drawing.Size(178,23)

$lblDBName.TabIndex = 0

$lblDBName.Text = “Enter Server Name “

$lblDBName.Visible = $TRUE

#

#$txtComputerName.text

#txtComputerName

$txtComputerName.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$txtComputerName.Location = New-Object System.Drawing.Point(13, 35)

$txtComputerName.Name = “txtComputerName”

$txtComputerName.TabIndex = 1

$txtComputerName.Size = New-Object System.Drawing.Size(200,70)

$txtComputerName.visible=$TRUE

#

# lblServicePack

#

$lblServicePack.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblServicePack.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblServicePack.Location = New-Object System.Drawing.Point(13,100)

$lblServicePack.Name = “lblServicePack”

$lblServicePack.Size = New-Object System.Drawing.Size(278,23)

$lblServicePack.TabIndex = 0

$lblServicePack.Text = “ServicePack”

$lblServicePack.Visible = $False

#

# lblOS

#

$lblOS.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblOS.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblOS.Location = New-Object System.Drawing.Point(12,77)

$lblOS.Name = “lblOS”

$lblOS.Size = New-Object System.Drawing.Size(278,23)

$lblOS.TabIndex = 2

$lblOS.Text = “Service Information”

$lblOS.Visible = $False

#

# statusBar1

#

$statusBar1.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$statusBar1.Location = New-Object System.Drawing.Point(0,365)

$statusBar1.Name = “statusBar1″

$statusBar1.Size = New-Object System.Drawing.Size(390,22)

$statusBar1.TabIndex = 5

$statusBar1.Text = “statusBar1″

#

# chart1

#

$chart1.Anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Left -bor [System.Windows.Forms.AnchorStyles]::Right

$chart1.BackGradientStyle = [System.Windows.Forms.DataVisualization.Charting.GradientStyle]::TopBottom

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1 = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.Area3DStyle.Enable3D = $True

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.AxisX.Title = “Disk”

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.AxisY.Title = “Disk Space (MB)”

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.Name = “ChartArea1″

[void]$chart1.ChartAreas.Add($System_Windows_Forms_DataVisualization_Charting_ChartArea_1)

$chart1.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$chart1.Location = New-Object System.Drawing.Point(13,200)

$chart1.Name = “chart1″

$System_Windows_Forms_DataVisualization_Charting_Series_2 = New-Object System.Windows.Forms.DataVisualization.Charting.Series

$System_Windows_Forms_DataVisualization_Charting_Series_2.ChartArea = “ChartArea1″

$System_Windows_Forms_DataVisualization_Charting_Series_2.ChartType = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType]::Pie

$System_Windows_Forms_DataVisualization_Charting_Series_2.CustomProperties = “DrawingStyle=Cylinder, PieDrawingStyle=Concave”

$System_Windows_Forms_DataVisualization_Charting_Series_2.IsVisibleInLegend = $False

$System_Windows_Forms_DataVisualization_Charting_Series_2.Legend = “Legend1″

$System_Windows_Forms_DataVisualization_Charting_Series_2.Name = “Disk Space”

[void]$chart1.Series.Add($System_Windows_Forms_DataVisualization_Charting_Series_2)

$chart1.Size = New-Object System.Drawing.Size(600,350)

$chart1.TabIndex = 0

$chart1.Text = “chart1″

$System_Windows_Forms_DataVisualization_Charting_Title_3 = New-Object System.Windows.Forms.DataVisualization.Charting.Title

$System_Windows_Forms_DataVisualization_Charting_Title_3.Alignment = [System.Drawing.ContentAlignment]::TopCenter

$System_Windows_Forms_DataVisualization_Charting_Title_3.DockedToChartArea = “ChartArea1″

$System_Windows_Forms_DataVisualization_Charting_Title_3.IsDockedInsideChartArea = $False

$System_Windows_Forms_DataVisualization_Charting_Title_3.Name = “Title1″

$System_Windows_Forms_DataVisualization_Charting_Title_3.Text = “Disk Space”

[void]$chart1.Titles.Add($System_Windows_Forms_DataVisualization_Charting_Title_3)

#

#Save the initial state of the form

$InitialFormWindowState = $formDiskSpacePieChart.WindowState

#Init the OnLoad event to correct the initial state of the form

$formDiskSpacePieChart.add_Load($Form_StateCorrection_Load)

#Show the Form

return $formDiskSpacePieChart.ShowDialog()

} #End Function

if(OnApplicationLoad -eq $true)

{

#Create the form

#Call-SystemInformation_pff | Out-Null

#Call-Disk_Space_Chart_pff | Out-Null

Call-SystemInformation_pff | Out-Null

#Perform cleanup

OnApplicationExit

}

}

Function Get-MemoryGUI

{

function OnApplicationLoad {

if([Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms.DataVisualization”) -eq $null)

{

#Microsoft Chart Controls are not installed

[void][reflection.assembly]::Load(“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][System.Windows.Forms.MessageBox]::Show(“Microsoft Chart Controls for Microsoft .NET 3.5 Framework is required”,”Microsoft Chart Controls Required”)

#Open the URL

[System.Diagnostics.Process]::Start(“http://www.microsoft.com/downloads/en/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=en&#8221;);

return $false

}

return $true #return true for success or false for failure

}

function OnApplicationExit {

$script:ExitCode = 0 #Set the exit code for the Packager

}

#endregion Application Functions

#———————————————-

# Generated Form Function

#———————————————-

function Call-SystemInformation_pff {

#———————————————-

#region Import the Assemblies

#———————————————-

[void][reflection.assembly]::Load(“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”)

[void][reflection.assembly]::Load(“mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″)

#endregion Import Assemblies

#———————————————-

#region Generated Form Objects

#———————————————-

[System.Windows.Forms.Application]::EnableVisualStyles()

$formMemoryPieChart = New-Object System.Windows.Forms.Form

$dataGrid1 = New-Object System.Windows.Forms.DataGrid

$chart1 = New-Object System.Windows.Forms.DataVisualization.Charting.Chart

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$btnRefresh = New-Object System.Windows.Forms.Button

$btngetdata=New-Object System.Windows.Forms.Button

$rtbPerfData = New-Object System.Windows.Forms.RichTextBox

$lblServicePack = New-Object System.Windows.Forms.Label

$lblDBName= New-Object System.Windows.Forms.Label

$lblOS = New-Object System.Windows.Forms.Label

$statusBar1 = New-Object System.Windows.Forms.StatusBar

$btnClose = New-Object System.Windows.Forms.Button

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$txtComputerName = New-Object System.Windows.Forms.TextBox

$dataGrid1 = New-Object System.Windows.Forms.DataGrid

function Load-Chart

{

Param( #$XPoints, $YPoints, $XTitle, $YTitle, $Title, $ChartStyle)

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2,Mandatory=$true)]

$XPoints

,

[Parameter(Position=3,Mandatory=$true)]

$YPoints

,

[Parameter(Position=4,Mandatory=$false)]

[string]$XTitle

,

[Parameter(Position=5,Mandatory=$false)]

[string]$YTitle

,

[Parameter(Position=6,Mandatory=$false)]

[string]$Title

,

[Parameter(Position=7,Mandatory=$false)]

[System.Windows.Forms.DataVisualization.Charting.SeriesChartType]$ChartType

,

[Parameter(Position=8,Mandatory=$false)]

$SeriesIndex = 0

,

[Parameter(Position=9,Mandatory=$false)]

$TitleIndex = 0,

[switch]$Append)

$ChartAreaIndex = 0

if($Append)

{

$name = “ChartArea ” + ($ChartControl.ChartAreas.Count + 1).ToString();

$ChartArea = $ChartControl.ChartAreas.Add($name)

$ChartAreaIndex = $ChartControl.ChartAreas.Count – 1

$name = “Series ” + ($ChartControl.Series.Count + 1).ToString();

$Series = $ChartControl.Series.Add($name)

$SeriesIndex = $ChartControl.Series.Count – 1

$Series.ChartArea = $ChartArea.Name

if($Title)

{

$name = “Title ” + ($ChartControl.Titles.Count + 1).ToString();

$TitleObj = $ChartControl.Titles.Add($name)

$TitleIndex = $ChartControl.Titles.Count – 1

$TitleObj.DockedToChartArea = $ChartArea.Name

$TitleObj.IsDockedInsideChartArea = $false

}

}

else

{

if($ChartControl.ChartAreas.Count -eq  0)

{

$name = “ChartArea ” + ($ChartControl.ChartAreas.Count + 1).ToString();

[void]$ChartControl.ChartAreas.Add($name)

$ChartAreaIndex = $ChartControl.ChartAreas.Count – 1

}

if($ChartControl.Series.Count -eq 0)

{

$name = “Series ” + ($ChartControl.Series.Count + 1).ToString();

$Series = $ChartControl.Series.Add($name)

$SeriesIndex = $ChartControl.Series.Count – 1

$Series.ChartArea = $ChartControl.ChartAreas[0].Name

}

}

$Series = $ChartControl.Series[$SeriesIndex]

$ChartArea = $ChartControl.ChartAreas[$Series.ChartArea]

$Series.Points.Clear()

if($Title)

{

if($ChartControl.Titles.Count -eq 0)

{

$name = “Title ” + ($ChartControl.Titles.Count + 1).ToString();

[void]$ChartControl.Titles.Add($name)

$TitleIndex = $ChartControl.Titles.Count – 1

$TitleObj.DockedToChartArea = $ChartArea.Name

$TitleObj.IsDockedInsideChartArea = $false

}

$ChartControl.Titles[$TitleIndex].Text = $Title

}

if($ChartType)

{

$Series.ChartType = $ChartType

}

if($XTitle)

{

$ChartArea.AxisX.Title = $XTitle

}

if($YTitle)

{

$ChartArea.AxisY.Title = $YTitle

}

if($XPoints -isnot [Array] -or $XPoints -isnot [System.Collections.IEnumerable])

{

$array = New-Object System.Collections.ArrayList

$array.Add($XPoints)

$XPoints = $array

}

if($YPoints -isnot [Array] -or $YPoints -isnot [System.Collections.IEnumerable])

{

$array = New-Object System.Collections.ArrayList

$array.Add($YPoints)

$YPoints = $array

}

$Series.Points.DataBindXY($XPoints, $YPoints)

}

function Clear-Chart

{

Param (

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2, Mandatory=$false)]

[Switch]$LeaveSingleChart

)

$count = 0

if($LeaveSingleChart)

{

$count = 1

}

while($ChartControl.Series.Count -gt $count)

{

$ChartControl.Series.RemoveAt($ChartControl.Series.Count – 1)

}

while($ChartControl.ChartAreas.Count -gt $count)

{

$ChartControl.ChartAreas.RemoveAt($ChartControl.ChartAreas.Count – 1)

}

while($ChartControl.Titles.Count -gt $count)

{

$ChartControl.Titles.RemoveAt($ChartControl.Titles.Count – 1)

}

if($ChartControl.Series.Count -gt 0)

{

$ChartControl.Series[0].Points.Clear()

}

}

#endregion

<#

$FormEvent_Load={

#TODO: Initialize Form Controls here

Load-PieChart

}

#>

function Load-PieChart

{

param(

[string[]]$servers = “$ENV:COMPUTERNAME”

)

foreach ($server in $servers) {

#Get Disk space using WMI and make sure it is an array

$Memory = @(Get-WmiObject -Class Win32_OperatingSystem -computername $servers | Select-Object Name, TotalVisibleMemorySize, FreePhysicalMemory,TotalVirtualMemorySize,FreeVirtualMemory,FreeSpaceInPagingFiles,NumberofProcesses,NumberOfUsers )

#Remove all the current charts

Clear-Chart $chart1

#Loop through each drive

foreach($m in $Memory)

{

$TotalRAM = $m.TotalVisibleMemorySize/1MB

$FreeRAM = $m.FreePhysicalMemory/1MB

$TotalVirtualMemorySize=[Math]::Round($m.TotalVirtualMemorySize/1MB, 3)

$FreeVirtualMemory=[Math]::Round($m.FreeVirtualMemory/1MB, 3)

#Load a Chart for each Drive

Load-Chart $chart1 -XPoints (“Physical Total RAM ({0:N1} GB)” -f $TotalRAM), (“Physical Free RAM ({0:N1} GB)” -f $FreeRAM) -YPoints $TotalRAM, $FreeRAM -ChartType “Bar” -Title (“Physical Memory Chart”) -Append

Load-Chart $chart1 -XPoints (“Virtual Total RAM ({0:N1} GB)” -f $TotalVirtualMemorySize), (“Virtual Free RAM ({0:N1} GB)” -f $FreeVirtualMemory) -YPoints $TotalVirtualMemorySize, $FreeVirtualMemory -ChartType “Bar” -Title (” Virtual Memory Chart”) -Append

}

#Set Custom Style

foreach ($Series in $chart1.Series)

{

$Series.CustomProperties = “PieDrawingStyle=Concave”

}

}

}

function Get-OSMemory

{

param(

[string]$Computer = “$ENV:COMPUTERNAME”

)

$script:Object =@()

$script:array = New-Object System.Collections.ArrayList

$Object =@()

if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {

$SystemInfo = Get-WmiObject -Class Win32_OperatingSystem -computername $Computer | Select-Object Name, TotalVisibleMemorySize, FreePhysicalMemory,TotalVirtualMemorySize,FreeVirtualMemory,FreeSpaceInPagingFiles,NumberofProcesses,NumberOfUsers

$TotalRAM = $SystemInfo.TotalVisibleMemorySize/1MB

$FreeRAM = $SystemInfo.FreePhysicalMemory/1MB

$UsedRAM = $TotalRAM – $FreeRAM

$RAMPercentFree = ($FreeRAM / $TotalRAM) * 100

$TotalRAM = [Math]::Round($TotalRAM, 2)

$FreeRAM = [Math]::Round($FreeRAM, 2)

$UsedRAM = [Math]::Round($UsedRAM, 2)

$RAMPercentFree = [Math]::Round($RAMPercentFree, 2)

$TotalVirtualMemorySize=[Math]::Round($SystemInfo.TotalVirtualMemorySize/1MB, 3)

$FreeVirtualMemory=[Math]::Round($SystemInfo.FreeVirtualMemory/1MB, 3)

$FreeSpaceInPagingFiles=[Math]::Round($SystemInfo.FreeSpaceInPagingFiles/1MB, 3)

$NP=$SystemInfo.NumberofProcesses

$NU=$SystemInfo.NumberOfUsers

$Object += New-Object PSObject -Property @{

ComputerName = $Computer.ToUpper();

#Architecture = $architecture;

#OperatingSystem = $OS;

TotalRAMGB = $TotalRAM;

FreeRAMGB = $FreeRAM;

UsedRAMGB = $UsedRAM;

FreeRAMPercentage =$RAMPercentFree;

TotalVMSizeGB=$TotalVirtualMemorySize;

FreeVMGB=$FreeVirtualMemory;

FreeSpaceInPageFileGB=$FreeSpaceInPagingFiles;

NoOfProcesses=$NP;

NoOfUsers=$NU

}

}

$array.AddRange($Object)

$dataGrid1.DataSource = $array

}

$GetData={

$statusBar1.text=”Getting Memory Details Data..please wait”

if ($txtComputerName.text -eq ”)

{

$txtComputerName.text=$ENV:COMPUTERNAME

}

if(Test-Connection -ComputerName $txtComputerName.text -Count 1 -ea 0) {

$data=Get-OSMemory -Computer $txtComputerName.text | Out-String

Load-PieChart -servers $txtComputerName.text

}

else

{

[Windows.Forms.MessageBox]::Show(“Unable to connect to the server!!”)

}

$errorActionPreference=”Continue”

$statusBar1.Text=”Ready”

}

$Close={

$formMemoryPieChart.close()

}

# –End User Generated Script–

#———————————————-

# Generated Events

#———————————————-

$Form_StateCorrection_Load=

{

#Correct the initial state of the form to prevent the .Net maximized form issue

$formMemoryPieChart.WindowState = $InitialFormWindowState

}

#———————————————-

#region Generated Form Code

#———————————————-

#

# formMemoryPieChart

#

$formMemoryPieChart.Controls.Add($buttonSave)

$formMemoryPieChart.Controls.Add($chart1)

$formMemoryPieChart.ClientSize = New-Object System.Drawing.Size(575,575)

$formMemoryPieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$formMemoryPieChart.MinimumSize = New-Object System.Drawing.Size(300,300)

$formMemoryPieChart.Name = “formMemoryPieChart”

$formMemoryPieChart.Text = “Disk Space Pie Chart”

$formMemoryPieChart.Controls.Add($btnRefresh)

$formMemoryPieChart.Controls.Add($lblServicePack)

$formMemoryPieChart.Controls.Add($lblOS)

$formMemoryPieChart.Controls.Add($lblDBName)

$formMemoryPieChart.Controls.Add($statusBar1)

$formMemoryPieChart.Controls.Add($btnClose)

$formMemoryPieChart.Controls.Add($txtComputerName)

$formMemoryPieChart.ClientSize = New-Object System.Drawing.Size(850,600)

$formMemoryPieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$formMemoryPieChart.Name = “form1″

$formMemoryPieChart.Text = “Physical and Virtual Memory Usage Information”

$formMemoryPieChart.add_Load($PopulateList)

$formMemoryPieChart.add_Load($FormEvent_Load)

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Width = 825

$System_Drawing_Size.Height = 100

$dataGrid1.Size = $System_Drawing_Size

$dataGrid1.DataBindings.DefaultDataSourceUpdateMode = 0

$dataGrid1.HeaderForeColor = [System.Drawing.Color]::FromArgb(255,0,0,0)

$dataGrid1.Name = “dataGrid1″

$dataGrid1.DataMember = “”

$dataGrid1.TabIndex = 0

$System_Drawing_Point = New-Object System.Drawing.Point

$System_Drawing_Point.X =13

$System_Drawing_Point.Y = 62

$dataGrid1.Location = $System_Drawing_Point

$formMemoryPieChart.Controls.Add($dataGrid1)

$dataGrid1.CaptionText=’Physical and Virtual Memory Usage Information’

#

# btnRefresh

#

$btnRefresh.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$btnRefresh.Enabled = $TRUE

$btnRefresh.Location = New-Object System.Drawing.Point(230,35)

$btnRefresh.Name = “btnRefresh”

$btnRefresh.Size = New-Object System.Drawing.Size(95,20)

$btnRefresh.TabIndex = 2

$btnRefresh.Text = “GetMemory”

$btnRefresh.UseVisualStyleBackColor = $True

$btnRefresh.add_Click($GetData)

#

#

# btnClose

#

$btnClose.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$btngetdata.Enabled = $TRUE

$btnClose.Location = New-Object System.Drawing.Point(373,35)

$btnClose.Name = “btnClose”

$btnClose.Size = New-Object System.Drawing.Size(95,20)

$btnClose.TabIndex = 3

$btnClose.Text = “Close”

$btnClose.UseVisualStyleBackColor = $True

$btnClose.add_Click($Close)

#

# lblDBName

#

$lblDBName.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblDBName.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblDBName.Location = New-Object System.Drawing.Point(13,10)

$lblDBName.Name = “lblDBName”

$lblDBName.Size = New-Object System.Drawing.Size(178,23)

$lblDBName.TabIndex = 0

$lblDBName.Text = “Enter Server Name “

$lblDBName.Visible = $TRUE

#

#$txtComputerName.text

#txtComputerName

$txtComputerName.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$txtComputerName.Location = New-Object System.Drawing.Point(13, 35)

$txtComputerName.Name = “txtComputerName”

$txtComputerName.TabIndex = 1

$txtComputerName.Size = New-Object System.Drawing.Size(200,70)

$txtComputerName.visible=$TRUE

#

# lblServicePack

#

$lblServicePack.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblServicePack.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblServicePack.Location = New-Object System.Drawing.Point(13,100)

$lblServicePack.Name = “lblServicePack”

$lblServicePack.Size = New-Object System.Drawing.Size(278,23)

# $lblServicePack.TabIndex = 0

$lblServicePack.Text = “ServicePack”

$lblServicePack.Visible = $False

#

# lblOS

#

$lblOS.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblOS.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblOS.Location = New-Object System.Drawing.Point(12,77)

$lblOS.Name = “lblOS”

$lblOS.Size = New-Object System.Drawing.Size(278,23)

#    $lblOS.TabIndex = 2

$lblOS.Text = “Service Information”

$lblOS.Visible = $False

#

# statusBar1

#

$statusBar1.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$statusBar1.Location = New-Object System.Drawing.Point(0,365)

$statusBar1.Name = “statusBar1″

$statusBar1.Size = New-Object System.Drawing.Size(390,22)

$statusBar1.TabIndex = 5

$statusBar1.Text = “statusBar1″

#

# chart1

#

$chart1.Anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Left -bor [System.Windows.Forms.AnchorStyles]::Right

$chart1.BackGradientStyle = [System.Windows.Forms.DataVisualization.Charting.GradientStyle]::TopBottom

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1 = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.Area3DStyle.Enable3D = $True

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.AxisX.Title = “Disk”

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.AxisY.Title = “Disk Space (MB)”

$System_Windows_Forms_DataVisualization_Charting_ChartArea_1.Name = “ChartArea1″

[void]$chart1.ChartAreas.Add($System_Windows_Forms_DataVisualization_Charting_ChartArea_1)

$chart1.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$chart1.Location = New-Object System.Drawing.Point(13,200)

$chart1.Name = “chart1″

$System_Windows_Forms_DataVisualization_Charting_Series_2 = New-Object System.Windows.Forms.DataVisualization.Charting.Series

$System_Windows_Forms_DataVisualization_Charting_Series_2.ChartArea = “ChartArea1″

$System_Windows_Forms_DataVisualization_Charting_Series_2.ChartType = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType]::Pie

$System_Windows_Forms_DataVisualization_Charting_Series_2.CustomProperties = “DrawingStyle=Cylinder, PieDrawingStyle=Concave”

$System_Windows_Forms_DataVisualization_Charting_Series_2.IsVisibleInLegend = $False

$System_Windows_Forms_DataVisualization_Charting_Series_2.Legend = “Legend1″

$System_Windows_Forms_DataVisualization_Charting_Series_2.Name = “Memory Area”

[void]$chart1.Series.Add($System_Windows_Forms_DataVisualization_Charting_Series_2)

$chart1.Size = New-Object System.Drawing.Size(825,350)

$chart1.TabIndex = 0

$chart1.Text = “chart1″

$System_Windows_Forms_DataVisualization_Charting_Title_3 = New-Object System.Windows.Forms.DataVisualization.Charting.Title

$System_Windows_Forms_DataVisualization_Charting_Title_3.Alignment = [System.Drawing.ContentAlignment]::TopCenter

$System_Windows_Forms_DataVisualization_Charting_Title_3.DockedToChartArea = “ChartArea1″

$System_Windows_Forms_DataVisualization_Charting_Title_3.IsDockedInsideChartArea = $False

$System_Windows_Forms_DataVisualization_Charting_Title_3.Name = “Title1″

$System_Windows_Forms_DataVisualization_Charting_Title_3.Text = “Memory Area”

[void]$chart1.Titles.Add($System_Windows_Forms_DataVisualization_Charting_Title_3)

#

#Save the initial state of the form

$InitialFormWindowState = $formMemoryPieChart.WindowState

#Init the OnLoad event to correct the initial state of the form

$formMemoryPieChart.add_Load($Form_StateCorrection_Load)

#Show the Form

return $formMemoryPieChart.ShowDialog()

} #End Function

#Call OnApplicationLoad to initialize

if(OnApplicationLoad -eq $true)

{

#Create the form

Call-SystemInformation_pff | Out-Null

#Perform cleanup

OnApplicationExit

}

}

function Get-ProcessGUI

{

#========================================================================

# Generated On: 02/07/2014

# Generated By: Prashanth Jayaram

# Version     : 1.1

# Description : TOP 10 Process – Memory consumption Report – 3D Graph

#========================================================================

function OnApplicationLoad {

if([Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms.DataVisualization”) -eq $null)

{

#Microsoft Chart Controls are not installed

[void][reflection.assembly]::Load(“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][System.Windows.Forms.MessageBox]::Show(“Microsoft Chart Controls for Microsoft .NET 3.5 Framework is required”,”Microsoft Chart Controls Required”)

#Open the URL

[System.Diagnostics.Process]::Start(“http://www.microsoft.com/downloads/en/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=en&#8221;);

return $false

}

return $true #return true for success or false for failure

}

function OnApplicationExit {

#Note: This function is not called in Projects

#Note: This function runs after the form is closed

#TODO: Add custom code to clean up and unload snapins when the application exits

$script:ExitCode = 0 #Set the exit code for the Packager

}

#endregion Application Functions

#———————————————-

# Generated Form Function

#———————————————-

function Call-SystemInformation_pff {

#———————————————-

#region Import the Assemblies

#———————————————-

[void][reflection.assembly]::Load(“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”)

[void][reflection.assembly]::Load(“mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″)

[void][reflection.assembly]::Load(“System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″)

#endregion Import Assemblies

#———————————————-

#region Generated Form Objects

#———————————————-

[System.Windows.Forms.Application]::EnableVisualStyles()

$formProcessPieChart = New-Object System.Windows.Forms.Form

$dataGrid1 = New-Object System.Windows.Forms.DataGrid

$chart = New-Object System.Windows.Forms.DataVisualization.Charting.Chart

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$btnRefresh = New-Object System.Windows.Forms.Button

$btnClear = New-Object System.Windows.Forms.Button

$btngetdata=New-Object System.Windows.Forms.Button

$rtbPerfData = New-Object System.Windows.Forms.RichTextBox

$lblServicePack = New-Object System.Windows.Forms.Label

$lblDBName= New-Object System.Windows.Forms.Label

$lblOS = New-Object System.Windows.Forms.Label

$statusBar1 = New-Object System.Windows.Forms.StatusBar

$btnClose = New-Object System.Windows.Forms.Button

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$txtComputerName = New-Object System.Windows.Forms.TextBox

$dataGrid1 = New-Object System.Windows.Forms.DataGrid

function Load-Chart

{

Param( #$XPoints, $YPoints, $XTitle, $YTitle, $Title, $ChartStyle)

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2,Mandatory=$true)]

$XPoints

,

[Parameter(Position=3,Mandatory=$true)]

$YPoints

,

[Parameter(Position=4,Mandatory=$false)]

[string]$XTitle

,

[Parameter(Position=5,Mandatory=$false)]

[string]$YTitle

,

[Parameter(Position=6,Mandatory=$false)]

[string]$Title

,

[Parameter(Position=7,Mandatory=$false)]

[System.Windows.Forms.DataVisualization.Charting.SeriesChartType]$ChartType

,

[Parameter(Position=8,Mandatory=$false)]

$SeriesIndex = 0

,

[Parameter(Position=9,Mandatory=$false)]

$TitleIndex = 0,

[switch]$Append)

$ChartAreaIndex = 0

if($Append)

{

$name = “ChartArea ” + ($ChartControl.ChartAreas.Count + 1).ToString();

$ChartArea = $ChartControl.ChartAreas.Add($name)

$ChartAreaIndex = $ChartControl.ChartAreas.Count – 1

$name = “Series ” + ($ChartControl.Series.Count + 1).ToString();

$Series = $ChartControl.Series.Add($name)

$SeriesIndex = $ChartControl.Series.Count – 1

$Series.ChartArea = $ChartArea.Name

if($Title)

{

$name = “Title ” + ($ChartControl.Titles.Count + 1).ToString();

$TitleObj = $ChartControl.Titles.Add($name)

$TitleIndex = $ChartControl.Titles.Count – 1

$TitleObj.DockedToChartArea = $ChartArea.Name

$TitleObj.IsDockedInsideChartArea = $false

}

}

else

{

if($ChartControl.ChartAreas.Count -eq  0)

{

$name = “ChartArea ” + ($ChartControl.ChartAreas.Count + 1).ToString();

[void]$ChartControl.ChartAreas.Add($name)

$ChartAreaIndex = $ChartControl.ChartAreas.Count – 1

}

if($ChartControl.Series.Count -eq 0)

{

$name = “Series ” + ($ChartControl.Series.Count + 1).ToString();

$Series = $ChartControl.Series.Add($name)

$SeriesIndex = $ChartControl.Series.Count – 1

$Series.ChartArea = $ChartControl.ChartAreas[0].Name

}

}

$Series = $ChartControl.Series[$SeriesIndex]

$ChartArea = $ChartControl.ChartAreas[$Series.ChartArea]

$Series.Points.Clear()

if($Title)

{

if($ChartControl.Titles.Count -eq 0)

{

$name = “Title ” + ($ChartControl.Titles.Count + 1).ToString();

[void]$ChartControl.Titles.Add($name)

$TitleIndex = $ChartControl.Titles.Count – 1

$TitleObj.DockedToChartArea = $ChartArea.Name

$TitleObj.IsDockedInsideChartArea = $false

}

$ChartControl.Titles[$TitleIndex].Text = $Title

}

if($ChartType)

{

$Series.ChartType = $ChartType

}

if($XTitle)

{

$ChartArea.AxisX.Title = $XTitle

}

if($YTitle)

{

$ChartArea.AxisY.Title = $YTitle

}

if($XPoints -isnot [Array] -or $XPoints -isnot [System.Collections.IEnumerable])

{

$array = New-Object System.Collections.ArrayList

$array.Add($XPoints)

$XPoints = $array

}

if($YPoints -isnot [Array] -or $YPoints -isnot [System.Collections.IEnumerable])

{

$array = New-Object System.Collections.ArrayList

$array.Add($YPoints)

$YPoints = $array

}

$Series.Points.DataBindXY($XPoints, $YPoints)

}

function Clear-Chart

{

Param (

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2, Mandatory=$false)]

[Switch]$LeaveSingleChart

)

$count = 0

if($LeaveSingleChart)

{

$count = 1

}

while($ChartControl.Series.Count -gt $count)

{

$ChartControl.Series.RemoveAt($ChartControl.Series.Count – 1)

}

while($ChartControl.ChartAreas.Count -gt $count)

{

$ChartControl.ChartAreas.RemoveAt($ChartControl.ChartAreas.Count – 1)

}

while($ChartControl.Titles.Count -gt $count)

{

$ChartControl.Titles.RemoveAt($ChartControl.Titles.Count – 1)

}

if($ChartControl.Series.Count -gt 0)

{

$ChartControl.Series[0].Points.Clear()

}

}

#endregion

<#

$FormEvent_Load={

#TODO: Initialize Form Controls here

Load-PieChart

}

#>

Function  Load-PieChart {

Param([string]$computername)

$Chart.ChartAreas.Add($ChartArea)

$process = [System.Diagnostics.Process]

$Processes = $process::GetProcesses($computername)|Sort-Object WS -Descending|select Handles,

@{Label=”NPM(K)”;Expression={[int]($_.NPM/1024)}}, `

@{Label=”PM(K)”;Expression={[int]($_.PM/1024)}}, `

@{Label=”WS”;Expression={[int]($_.WS/1024)}}, `

@{Label=”VM(M)”;Expression={[int]($_.VM/1MB)}}, `

Id, ProcessName, MachineName -first 9

$ProcNames = @(foreach($Proc in $Processes){$Proc.ProcessName+ “_”+$Proc.ID})

$WS = @(foreach($Proc in $Processes){$Proc.WS/1KB})

$Chart.Series.Add(“Data”)

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

$ChartArea.AxisX.Title = “Process”

$ChartArea.AxisY.Title = “Working Set (KB)”

# Find point with max/min values and change their colour

$maxValuePoint = $Chart.Series["Data"].Points.FindMaxByValue()

$maxValuePoint.Color = [System.Drawing.Color]::Red

$minValuePoint = $Chart.Series["Data"].Points.FindMinByValue()

$minValuePoint.Color = [System.Drawing.Color]::Green

# make bars into 3d cylinders

#$Chart.Series["Data"]["DrawingStyle"] = “Cylinder”

$chartArea.Area3DStyle = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea3DStyle  -Property @{Enable3D=$true; IsRightAngleAxes=$false; Rotation=10; Inclination=10;}

# display the chart on a form

$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

}

Function Get-ProcPerf {

Param([string]$computername)

$Object =@()

$array = New-Object System.Collections.ArrayList

# load the appropriate assemblies

# add data to chart

$process = [System.Diagnostics.Process]

#$process::GetProcesses($server)

$prc=$process::GetProcesses($computername)|Sort-Object WS -Descending|select Handles, `

@{Label=”NPM”;Expression={[int]($_.NPM/1024)}}, `

@{Label=”PM”;Expression={[int]($_.PM/1MB)}}, `

@{Label=”WS”;Expression={[int]($_.WS/1MB)}}, `

@{Label=”VM”;Expression={[int]($_.VM/1MB)}}, `

Id, ProcessName, MachineName -first 9

$Object =@()

foreach ($p in $prc)

{

$Object += New-Object PSObject -Property @{

Handles = $p.Handles;

NPM = $P.NPM;

PM = $P.PM;

WoringSet = $P.WS;

VM= $P.VM;

ID=$P.Id;

Name=$P.ProcessName;

SrvName=$P.MachineName

}

}

$column1 = @{expression=”MachineName”; width=20; label=”MachineName”; alignment=”left”}

$column2 = @{expression=”Handles”; width=10; label=”Handles”; alignment=”left”}

$column3 = @{expression=”NPM”; width=10; label=”NPM(K)”; alignment=”left”}

$column4 = @{expression=”PM”; width=10; label=”PM(K)”; alignment=”left”}

$column5 = @{expression=”WS”; width=10; label=”WS(K)”; alignment=”left”}

$column6 = @{expression=”VM”; width=10; label=”VM(MB)”; alignment=”left”}

$column7 = @{expression=”id”; width=10; label=”ProcessID”; alignment=”left”}

$column8 = @{expression=”Name”; width=15; label=”ProcessName”; alignment=”left”}

“#”*80

“Process Information”

“Generated $(get-date)”

“Generated from $(gc env:computername)”

“#”*80

#$Object

$Object |Format-Table  $column1,$column2,$column3,$column4,$column5,$column6,$column7,$column8

$array.AddRange($Object)

$dataGrid1.DataSource = $array

}

function Clear-Chart

{

Param (

[Parameter(Position=1,Mandatory=$true)]

[System.Windows.Forms.DataVisualization.Charting.Chart]$ChartControl

,

[Parameter(Position=2, Mandatory=$false)]

[Switch]$LeaveSingleChart

)

$count = 0

if($LeaveSingleChart)

{

$count = 1

}

while($ChartControl.Series.Count -gt $count)

{

$ChartControl.Series.RemoveAt($ChartControl.Series.Count – 1)

}

while($ChartControl.ChartAreas.Count -gt $count)

{

$ChartControl.ChartAreas.RemoveAt($ChartControl.ChartAreas.Count – 1)

}

while($ChartControl.Titles.Count -gt $count)

{

$ChartControl.Titles.RemoveAt($ChartControl.Titles.Count – 1)

}

if($ChartControl.Series.Count -gt 0)

{

$ChartControl.Series[0].Points.Clear()

}

}

$cleardata={

Clear-Chart $chart

}

$GetData={

Clear-Chart $chart

if ($txtComputerName.text -eq ”)

{

$txtComputerName.text =$env:COMPUTERNAME

}

$statusBar1.text=”Getting Process information ..please wait”

if(Test-Connection -ComputerName $txtComputerName.text -Count 1 -ea 0) {

$data=Get-ProcPerf -ComputerName $txtComputerName.text | Out-String

Load-PieChart -computername $txtComputerName.text

}

else

{

[Windows.Forms.MessageBox]::Show(“Not able connect to the server”, [Windows.Forms.MessageBoxIcon]::Information)

}

#$rtbPerfData.text=$data.Trim()

$errorActionPreference=”Continue”

$statusBar1.Text=”Ready”

}

$Close={

$formProcessPieChart.close()

}

# –End User Generated Script–

#———————————————-

# Generated Events

#———————————————-

$Form_StateCorrection_Load=

{

#Correct the initial state of the form to prevent the .Net maximized form issue

$formProcessPieChart.WindowState = $InitialFormWindowState

}

#———————————————-

#region Generated Form Code

#———————————————-

#

# formProcessPieChart

#

$formProcessPieChart.Controls.Add($buttonSave)

$formProcessPieChart.Controls.Add($chart)

$formProcessPieChart.ClientSize = New-Object System.Drawing.Size(513,640)

$formProcessPieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$formProcessPieChart.MinimumSize = New-Object System.Drawing.Size(300,300)

$formProcessPieChart.Name = “formProcessPieChart”

$formProcessPieChart.Text = “Disk Space Pie Chart”

$formProcessPieChart.Controls.Add($btnRefresh)

$formProcessPieChart.Controls.Add($lblServicePack)

$formProcessPieChart.Controls.Add($lblOS)

$formProcessPieChart.Controls.Add($lblDBName)

$formProcessPieChart.Controls.Add($statusBar1)

$formProcessPieChart.Controls.Add($btnClose)

$formProcessPieChart.Controls.Add($txtComputerName)

$formProcessPieChart.ClientSize = New-Object System.Drawing.Size(630,630)

$formProcessPieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$formProcessPieChart.Name = “form1″

$formProcessPieChart.Text = “Process Information”

$formProcessPieChart.add_Load($PopulateList)

$formProcessPieChart.add_Load($FormEvent_Load)

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Width = 600

$System_Drawing_Size.Height = 225

$dataGrid1.Size = $System_Drawing_Size

$dataGrid1.DataBindings.DefaultDataSourceUpdateMode = 0

$dataGrid1.HeaderForeColor = [System.Drawing.Color]::FromArgb(255,0,0,0)

$dataGrid1.Name = “dataGrid1″

$dataGrid1.DataMember = “”

$dataGrid1.TabIndex = 0

$System_Drawing_Point = New-Object System.Drawing.Point

$System_Drawing_Point.X =13

$System_Drawing_Point.Y = 62

$dataGrid1.Location = $System_Drawing_Point

$formProcessPieChart.Controls.Add($dataGrid1)

$dataGrid1.CaptionText=’Process Details’

#

# btnRefresh

#

$btnRefresh.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$btnRefresh.Enabled = $TRUE

$btnRefresh.Location = New-Object System.Drawing.Point(230,35)

$btnRefresh.Name = “btnRefresh”

$btnRefresh.Size = New-Object System.Drawing.Size(95,20)

$btnRefresh.TabIndex = 2

$btnRefresh.Text = “GetProcess”

$btnRefresh.UseVisualStyleBackColor = $True

$btnRefresh.add_Click($GetData)

#

#

$btnClose.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$btngetdata.Enabled = $TRUE

$btnClose.Location = New-Object System.Drawing.Point(328,35)

$btnClose.Name = “btnClose”

$btnClose.Size = New-Object System.Drawing.Size(95,20)

$btnClose.TabIndex = 3

$btnClose.Text = “Close”

$btnClose.UseVisualStyleBackColor = $True

$btnClose.add_Click($Close)

#

# lblDBName

#

$lblDBName.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblDBName.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblDBName.Location = New-Object System.Drawing.Point(13,10)

$lblDBName.Name = “lblDBName”

$lblDBName.Size = New-Object System.Drawing.Size(178,23)

$lblDBName.TabIndex = 0

$lblDBName.Text = “Enter Server Name “

$lblDBName.Visible = $TRUE

#

#$txtComputerName.text

#txtComputerName

$txtComputerName.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$txtComputerName.Location = New-Object System.Drawing.Point(13, 35)

$txtComputerName.Name = “txtComputerName”

$txtComputerName.TabIndex = 1

$txtComputerName.Size = New-Object System.Drawing.Size(200,70)

$txtComputerName.visible=$TRUE

#

# lblServicePack

#

$lblServicePack.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblServicePack.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblServicePack.Location = New-Object System.Drawing.Point(13,100)

$lblServicePack.Name = “lblServicePack”

$lblServicePack.Size = New-Object System.Drawing.Size(278,23)

$lblServicePack.TabIndex = 0

$lblServicePack.Text = “ServicePack”

$lblServicePack.Visible = $False

#

# lblOS

#

$lblOS.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$lblOS.Font = New-Object System.Drawing.Font(“Lucida Console”,8.25,1,3,1)

$lblOS.Location = New-Object System.Drawing.Point(12,77)

$lblOS.Name = “lblOS”

$lblOS.Size = New-Object System.Drawing.Size(278,23)

$lblOS.TabIndex = 2

$lblOS.Text = “Service Information”

$lblOS.Visible = $False

#

# statusBar1

#

$statusBar1.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation

$statusBar1.Location = New-Object System.Drawing.Point(0,365)

$statusBar1.Name = “statusBar1″

$statusBar1.Size = New-Object System.Drawing.Size(390,22)

$statusBar1.TabIndex = 5

$statusBar1.Text = “statusBar1″

$Chart.Width = 600

$Chart.Height = 300

$Chart.Left = 10

$Chart.Top = 300

$ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea

#Save the initial state of the form

$InitialFormWindowState = $formProcessPieChart.WindowState

#Init the OnLoad event to correct the initial state of the form

$formProcessPieChart.add_Load($Form_StateCorrection_Load)

#Show the Form

return $formProcessPieChart.ShowDialog()

} #End Function

if(OnApplicationLoad -eq $true)

{

#Create the form

#Call-SystemInformation_pff | Out-Null

#Call-Disk_Space_Chart_pff | Out-Null

Call-SystemInformation_pff | Out-Null

#Perform cleanup

OnApplicationExit

}

}

############################################################################################################

Reference:-

http://gallery.technet.microsoft.com/PowerShell-Disk-Space-cf5568f4

http://gallery.technet.microsoft.com/PowerShell-Memory-Details-b881196b

http://gallery.technet.microsoft.com/Top-10-Process-Listing-d638b0f1

The code is tested in all version of Powershell 2.0 onwards. You need to have .Net framework 3.0 or 3.5 as its pre-requisites for 3D Graph Display.

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating