PowerShell – Disk Space GUI Tool – Sharing a useful PowerShell GUI script to check disk drive usage along with a graph.
Copy and paste the below code on Powershell-ISE for better execution.
Tool Details :The layout details are as follows
When we made a wrong entries, message box will popup.
Right server will lead to a grid with data populated along with graph which represents its usage
You can also download the code: PowerShellGUI – DiskSpace – Tool
Note:- Works with Powershell 2.0 and above.
*******************************************************************************
Code:- Copy and Paste the below code
*******************************************************************************
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 { $script:ExitCode = 0 #Set the exit code for the Packager } #endregion Application Functions #---------------------------------------------- # Generated Form Function #---------------------------------------------- function Call-Disk_Space_Chart_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 #$buttonSave = New-Object System.Windows.Forms.Button $dataGrid1 = New-Object System.Windows.Forms.DataGrid $chart1 = New-Object System.Windows.Forms.DataVisualization.Charting.Chart #$savefiledialog1 = New-Object System.Windows.Forms.SaveFileDialog $InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState #endregion Generated Form Objects $btnRefresh = New-Object System.Windows.Forms.Button $btngetdata=New-Object System.Windows.Forms.Button $rtbPerfData = New-Object System.Windows.Forms.RichTextBox #$pictureBox1 = New-Object System.Windows.Forms.PictureBox $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 #$comboServers = New-Object System.Windows.Forms.ComboBox $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 = "LocalHost" ) $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 |select-object DeviceID, VolumeName,FreeSpace,Size,driveType |?{$_.DriveType -eq 3} 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.ToUpper();DeviceID= $Disk.DeviceID;VolumeName=$Disk.VolumeName;SizeGB=$TotalSize;InUseGB=$InUseSize;FreeSpaceGB=$FreeSpaceGB;PercentageGB=$FreeSpacePer } } } } $column1 = @{expression="Name"; width=30; label="Name"; alignment="left"} $column2 = @{expression="DeviceID"; width=15; label="DeviceID"; alignment="left"} $column3 = @{expression="VolumeName"; width=15; label="VolumeName"; alignment="left"} $column4 = @{expression="SizeGB"; width=15; label="SizeGB"; alignment="left"} $column5 = @{expression="InUseGB"; width=15; label="InUseGB"; alignment="left"} $column6 = @{expression="FreeSpaceGB"; width=15; label="FreeSpaceGB"; alignment="left"} $column7 = @{expression="PercentageGB"; width=15; label="PercentageGB"; alignment="left"} #$Object|format-table $column1, $column2, $column3 ,$column4, $column5, $column6,$column7 #$Object.GetEnumerator() $object|format-table $column1, $column2, $column3 ,$column4 ,$column5 ,$column6,$column7 $array.AddRange($Object) $dataGrid1.DataSource = $array } $GetData={ $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(“Unable to connect to the server!!") } #$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(575,575) $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(600,600) $formDiskSpacePieChart.DataBindings.DefaultDataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnValidation $formDiskSpacePieChart.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::SizableToolWindow $formDiskSpacePieChart.Name = "form1" $formDiskSpacePieChart.Text = "Disk Space Information" $formDiskSpacePieChart.add_Load($PopulateList) $formDiskSpacePieChart.add_Load($FormEvent_Load) $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 575 $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 = 7 $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(575,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 #Call OnApplicationLoad to initialize if(OnApplicationLoad -eq $true) { #Create the form Call-Disk_Space_Chart_pff | Out-Null #Perform cleanup OnApplicationExit }
Pingback: Copy/Transfer file using Powershell | Lance's IT Journal
Pingback: How to find OS start time with Powershell | Lance's IT Journal
Thanks for the code. When I run PowerShell I do Shift-RightClick on Windows PowerShell ISE and select “Run as a different User” and specify my administrator account. I need to do this as our corporate security has us use a normal user account “Ken” on our desktops and an administrator account “A-Ken” on servers. When I run your code the graphs appear normally but the disk details are missing. The output window of PowerShell ISE contains the following errors:
Method invocation failed because [System.Management.Automation.PSObject] doesn’t contain a method named ‘op_Addition’.
At line:279 char:1
+ $Object += New-Object PSObject -Property @{Name= $Computer.ToUpper();DeviceID= $ …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
My administrator account has access to the servers I’ve tested your application with so I’m not sure where the problem is. Do you have any suggestions on what’s wrong?
Ken
LikeLike
Can you copy and paste the below code and run it in PowerShell-ISE?
************************************************
function Get-DiskDetails
{
param(
[string[]]$ComputerName = “$ENV:COMPUTERNAME”
)
$script:Object =@()
$script: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 |select-object DeviceID, VolumeName,FreeSpace,Size| where {$_.DeviceID -ne “A:” -and $_.DeviceID -ne “D:”}
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.ToUpper();
DeviceID= $Disk.DeviceID;
VolumeName=$Disk.VolumeName;
SizeGB=$TotalSize;
InUseGB=$InUseSize;
FreeSpaceGB=$FreeSpaceGB;
PercentageGB=$FreeSpacePer
}
}
}
}
$column1 = @{expression=”Name”; width=30; label=”Name”; alignment=”left”}
$column2 = @{expression=”DeviceID”; width=15; label=”DeviceID”; alignment=”left”}
$column3 = @{expression=”VolumeName”; width=15; label=”VolumeName”; alignment=”left”}
$column4 = @{expression=”SizeGB”; width=15; label=”SizeGB”; alignment=”left”}
$column5 = @{expression=”InUseGB”; width=15; label=”InUseGB”; alignment=”left”}
$column6 = @{expression=”FreeSpaceGB”; width=15; label=”FreeSpaceGB”; alignment=”left”}
$column7 = @{expression=”PercentageGB”; width=15; label=”PercentageGB”; alignment=”left”}
#$Object|format-table $column1, $column2, $column3 ,$column4, $column5, $column6,$column7
#$Object.GetEnumerator()
$object|format-table $column1, $column2, $column3 ,$column4 ,$column5 ,$column6,$column7
#$array.AddRange($Object)
#$dataGrid1.DataSource = $array
}
Get-DiskDetails
************************************************************
LikeLike
The code is updated. Please use the latest code and let me know in case of any issues.
Thanks for letting me know – Prashanth
LikeLike
The updated code has resolved the problem. Excellent work!
Ken
LikeLike
Thank you:)
LikeLike
The code is updated. Please use the latest code and let me know in case of any issues.
Thanks for letting me know – Prashanth
LikeLike
Sorry, I hate to be a pain but I’ve found another problem. I have a server with three local disks (C:, D:, and E:) plus a DVD drive (F:). There is no disk in the DVD drive at this time. When I run your code, I see the Disk Details grid for C:, E: and F: – for some reason D: is missing. I have confirmed that the numbers (Size, InUse, etc) are all correct – it is just that one drive is missing. Oddly, the graph section works perfectly and shows data for drives C:, D: and E: with the correct size information. F: is missing but that’s OK since there really is no F: without a disk loaded.
I connected to a second server with two local drives (C: and D:), two drives connecting to a SAN (F: and G:) and an empty DVD drive (J:). (There is no E: drive.) The Disk Details section shows C:, F:, G: and J:. Drives D: is are missing. Like the first server, the graph section works perfectly and shows for the disks (C:, D:, F: and G:) and not the DVD drive (F:). I have confirmed that all values displayed are correct.
In both cases the Disk Details section has missed the second drive. Can you look into this please?
Ken
LikeLike
Just modify this piece of code like below
Current code –
$D=Get-WmiObject win32_logicalDisk -ComputerName $Computer |select-object DeviceID, VolumeName,FreeSpace,Size| where {$_.DeviceID -ne “A:” -and $_.DeviceID -ne “D:”}
Modified code:-
$D=Get-WmiObject win32_logicalDisk -ComputerName $Computer |select-object DeviceID, VolumeName,FreeSpace,Size| where {$_.DeviceID -ne “A:” }
LikeLike
I’ve updated the code…use this new version. Let me know in case of any issues – Prashanth
LikeLike
That fixed it. Just one more set of recommendations that I think will make the output look a little better… The columns of the Disk Details section are:
InUseGB, Name, VolumeName, SizeGB, FreeSpaceGB, DeviceID, PercentageGB
I would suggested that the column headings be changed as follows:
> “InUseGB” be changed to “UsedGB”
> “Name” be changed to “Server”
> “SizeGB” be changed to “TotalGB”
> “FreeSpaceGB” be changed to “FreeGB”
> “PertentageGB” be change “PercentFree”
Finally, I suggest the order of the columns be changed so they appear as:
Server, DeviceID, VolumeName, TotalGB, UsedGB, FreeGB, PercentFree
Thanks for the code – it is very useful app you’ve written.
Ken
LikeLike
Great delivery. Great site justifications. Maintain the amazing work.
This particular post site is priceless.
Where could I learn more?
LikeLike
Thanks for reading my space….
http://www.sapien.com/blog/2013/10/08/creating-a-gui-with-powershell-studio/
LikeLike
Hi there, botox Radom merely wanted to tell you, I liked this post botox Radom.
It had been helpful botox Radom. Carry on submitting!
LikeLike
Incredible points. Outstanding /fans/AnnaR1982R/discussion transport medyczny Kraków questions.
Keep up the good work.
This kind of text transport medyczny Lublin is priceless.
Where may I read more?
LikeLike
Hi, strony www simply wanted to mention, I liked this blog post strony www.
This had been helpful strony www. Continue
publishing!
LikeLike
What’s up, 6454 I would like to say, I enjoyed this post 51655.
It was pretty inspiring p10706. Continue posting!
LikeLike
Hi there, transport medyczny Szczecin merely wanted to mention, I enjoyed this post transport medyczny Szczecin.
That it was inspiring transport medyczny Szczecin. Keep going publishing!
LikeLike
Can we have a list of computers in a excel/txt and the output grid data of all the listed computers to the same excel by grouping them
LikeLike
Hi Shiva,
Please refer my other posts
https://sqlpowershell.wordpress.com/2016/08/08/disk-space-gui-tool-multi-servers-grid-and-email-output/
Prashanth
LikeLike