More diskinfo

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.

Advertisements
This entry was posted in PowerShell and CIM, Storage. 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