There is a hierarchy of objects to work through when dealing with disks
First you have the physical disk
PS> Get-CimInstance -ClassName Win32_DiskDrive | fl
Partitions : 5
DeviceID : \\.\PHYSICALDRIVE0
Model : HFS256G3AMNB-2200A
Size : 256052966400
Caption : HFS256G3AMNB-2200A
A physical disk can have 1 or more partitions:
PS> Get-CimInstance -ClassName Win32_DiskPartition | fl
NumberOfBlocks : 716800
BootPartition : False
Name : Disk #0, Partition #0
PrimaryPartition : False
Size : 367001600
Index : 0
NumberOfBlocks : 409600
BootPartition : True
Name : Disk #0, Partition #1
PrimaryPartition : True
Size : 209715200
Index : 1
NumberOfBlocks : 485312512
BootPartition : False
Name : Disk #0, Partition #2
PrimaryPartition : True
Size : 248480006144
Index : 2
NumberOfBlocks : 921600
BootPartition : False
Name : Disk #0, Partition #3
PrimaryPartition : False
Size : 471859200
Index : 3
NumberOfBlocks : 12492800
BootPartition : False
Name : Disk #0, Partition #4
PrimaryPartition : False
Size : 6396313600
Index : 4
next step down is logical disks
PS> Get-CimInstance -ClassName Win32_LogicalDisk | fl
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 108900372480
Size : 248480002048
VolumeName : Windows
The classes Win32_DiskDriveToDiskPartition and Win32_LogicalDiskToPartition link physical disks to partitions and partitions to logical disks respectively.
Then you’ve got volumes – which is where you actually work with disks for the most part
PS> Get-CimInstance -ClassName Win32_Volume | fl Caption, Label
Caption : C:\
Label : Windows
Caption : \\?\Volume{524b798f-a072-4ecc-8cfe-fb823e10a5e7}\
Label : Windows RE tools
Caption : \\?\Volume{4ea44e2e-dd30-4cd9-bfd1-c991be836d97}\
Label :
Caption : \\?\Volume{c671d23c-f5e5-473d-b6c4-fecb4a99e5b3}\
Label : Recovery image
The Storage module introduced with Windows 8 has cmdlets for some of these tasks:
PS> Get-PhysicalDisk | fl FriendlyName, SerialNumber, CanPool, OperationalStatus, HealthStatus, Usage
, Size
FriendlyName : HFS256G3AMNB-2200A
SerialNumber : EI3AN118813AM3740
CanPool : False
OperationalStatus : OK
HealthStatus : Healthy
Usage : Auto-Select
Size : 256060514304
Partitions:
PS> Get-Partition | fl PartitionNumber, DriveLetter, Offset, Size, Type
PartitionNumber : 1
DriveLetter :
Offset : 1048576
Size : 367001600
Type : Recovery
PartitionNumber : 2
DriveLetter :
Offset : 368050176
Size : 209715200
Type : System
PartitionNumber : 3
DriveLetter :
Offset : 577765376
Size : 134217728
Type : Reserved
PartitionNumber : 4
DriveLetter : C
Offset : 711983104
Size : 248480006144
Type : Basic
PartitionNumber : 5
DriveLetter :
Offset : 249191989248
Size : 471859200
Type : Recovery
PartitionNumber : 6
DriveLetter :
Offset : 249663848448
Size : 6396313600
Type : Recovery
Get-Disk returns similar, but not identical, information to Get-PhysicalDisk
The Get-Disk cmdlet gets one or more Disk objects visible to the operating system, or optionally a filtered list.
The Get-Disk cmdlet gets one or more Disk objects visible to the operating system, or optionally a filtered list.
There isn’t a cmdlet to get logical disks
For volumes:
PS> Get-Volume | fl DriveLetter, FileSystemLabel, FileSystem, DriveType, HealthStatus, OperationalSta
tus, SizeRemaining, Size
DriveLetter : C
FileSystemLabel : Windows
FileSystem : NTFS
DriveType : Fixed
HealthStatus : Healthy
OperationalStatus : OK
SizeRemaining : 108473528320
Size : 248480002048
DriveLetter :
FileSystemLabel :
FileSystem : NTFS
DriveType : Fixed
HealthStatus : Healthy
OperationalStatus : OK
SizeRemaining : 122884096
Size : 471855104
DriveLetter :
FileSystemLabel : Windows RE tools
FileSystem : NTFS
DriveType : Fixed
HealthStatus : Healthy
OperationalStatus : OK
SizeRemaining : 61980672
Size : 366997504
DriveLetter :
FileSystemLabel : Recovery image
FileSystem : NTFS
DriveType : Fixed
HealthStatus : Healthy
OperationalStatus : OK
SizeRemaining : 476807168
Size : 6396309504
As you can see from this quick comparison the same sorts of information is available from the storage cmdlets and WMI. In fact under the hood the storage cmdlets are using WMI – but a set of new classes defined in ROOT/Microsoft/Windows/Storage
The post WMI classes and Storage cmdlets appeared first on PowerShell for Windows Admins.