Disk identification

A recent question on the forums regarded using the Win32_LogicalDisk class to retrieve disk size and free space data.  A filter based on the disk letter was being used. The main error with the code was that the filter was being expressed as

“DeviceId=’E'”

rather than

“DeviceId=’E:”

The colon is necessary as its part of the DeviceId data – if you are in doubt about the form of the data required by the filter then examine the full output of the class to see an example.

There were a couple of other basic issues.

Firstly always output objects.

Secondly use the size constants MB, GB etc rather than calculating refresh each time.

The final modified code looks like this

$computername = $env:COMPUTERNAME
$partition = ‘C:’
$description = ‘backup_server’

Get-WmiObject -Class Win32_LogicalDisk -Filter “DeviceId=’$partition'”     -ComputerName $computername |
select PSComputerName,
@{Name=’Partition’; Expression={$_.DeviceId}},
@{Name=’Description’; Expression={$description}},
@{Name=’Size(GB)’;Expression={[math]::Round(($_.Size / 1GB), 2)}},
@{Name=’FreeSpace(GB)’;Expression={[math]::Round(($_.FreeSpace / 1GB), 2)}}

This entry was posted in PowerShell and WMI, Powershell Basics. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s