Function List-Partitions(){
#***************************************
# Purpose: create an arralist of Partition
#***************************************
$ArrayDrive = New-Object System.Collections.ArrayList
$partitionInfo = @(
$partitions = (Get-CimInstance -Classname Win32_LogicalDisk | Where-Object -FilterScript {($_.DriveType -eq 3)} ) #Hard Drive
if ($null -ne $partitions){
ForEach ($partition in $partitions) {
$PartitionUsedSpace = ($partition.Size - $partition.Freespace )
$AssociatorLetterToIndex = Get-CimInstance -Query "ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='$($partition.DeviceID)'} WHERE AssocClass=Win32_LogicalDiskToPartition"
foreach($Item In $AssociatorLetterToIndex){
$AssociatorIndex = Get-CimInstance -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='$($Item.DeviceID)'} WHERE AssocClass=Win32_DiskDriveToDiskPartition"
[pscustomobject]@{
Number=$Item.Index; DiskIndex = $Item.DiskIndex ; DiskType = $Item.DiskIndex ; DiskSize = [math]::Round($AssociatorIndex.Size / 1GB);
DriveLetter=$partition.DeviceID ; Available= [math]::Round($partition.Freespace / 1GB) ; Size = [math]::Round($partition.Size / 1GB) ;
CaptureSize= [math]::Round($PartitionUsedSpace / 1GB); FileSystem = $partition.FileSystem
}
}
}
}
else{
Add_Log -Message ("No Disk and Partition Found!") -Severity 3 -Component "ListPartitions"
}
)
$ArrayDrive.AddRange($partitionInfo)
return $ArrayDrive
}
List-Partitions | Format-Table -AutoSize