More diskinfo

Tags:
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