PowerShell for Windows Admins

Jul 12 2017   10:13AM GMT

More diskinfo

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

Tags:
CIM
Disk storage
Powershell

Yesterday I showed how to get the disk, partition and logical disk information using CIM. Today I want to show more diskinfo techniques.

This time we’ll use the Storage module which was introduced with Windows 8. Underneath the covers it uses CIM – just different classes. The storage module doesn’t differentiate between volumes and logical disks – it just uses volumes.

To start at the physical disk and get the partition and volumes:

$diskinfo = Get-Disk | foreach {

$parts = Get-Partition -DiskNumber $psitem.DiskNumber | where DriveLetter

$disk = $psitem

foreach ($part in $parts) {
 
 Get-Volume -Partition $part |
 foreach {
 $props = $null

$props = [ordered]@{
 Disk = $disk.Number
 Model = $disk.Model
 Firmware = $disk.FirmwareVersion
 SerialNUmber = $disk.SerialNumber
 'DiskSize(GB)' = [math]::Round(($disk.AllocatedSize / 1GB ), 2)
 Partitions = $disk.NumberOfPartitions
 Partition = $part.PartitionNumber
 BootPartition = $part.IsBoot
 'PartitionSize(GB)' = [math]::Round(($part.Size / 1GB ), 2)
 VolumeBlockSize = $psitem.AllocationUnitSize
 LDiskName = $psitem.DriveLetter
 FileSystem = $psitem.FileSystem
 LDiskSize = [math]::Round(($psitem.Size / 1GB ), 2)
 LDiskFree = [math]::Round(($psitem.SizeRemaining / 1GB ), 2)
 }

New-Object -TypeName PSObject -Property $props
 }
 }
 }
 $diskinfo

And to go the other way

$diskinfo = Get-Volume | 
 where {$_.DriveLetter -AND $_.DriveType -eq 'Fixed'} | 
foreach {

$part = Get-Partition -DriveLetter $psitem.DriveLetter 
 
 $disk = Get-Disk -Partition $part

$props = $null

$props = [ordered]@{
 Disk = $disk.Number
 Model = $disk.Model
 Firmware = $disk.FirmwareVersion
 SerialNUmber = $disk.SerialNumber
 'DiskSize(GB)' = [math]::Round(($disk.AllocatedSize / 1GB ), 2)
 Partitions = $disk.NumberOfPartitions
 Partition = $part.PartitionNumber
 BootPartition = $part.IsBoot
 'PartitionSize(GB)' = [math]::Round(($part.Size / 1GB ), 2)
 VolumeBlockSize = $psitem.AllocationUnitSize
 LDiskName = $psitem.DriveLetter
 FileSystem = $psitem.FileSystem
 LDiskSize = [math]::Round(($psitem.Size / 1GB ), 2)
 LDiskFree = [math]::Round(($psitem.SizeRemaining / 1GB ), 2)
 }

New-Object -TypeName PSObject -Property $props
 }
 $diskinfo

The number of blocks doesn’t seem to be available – suppose you could calculate it – otherwise the information is the same as with the CIM classes you saw last time. Some of the property names are different.

 Comment on this Post

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: