private/_GetDiskInfo.ps1

function _GetDiskInfo {
    [cmdletbinding()]
    Param(
        [Microsoft.Management.Infrastructure.CimSession]$Cimsession
    )
    Write-Verbose "[$($CimSession.ComputerName)] - Gathering Disk information"
    $Volumes = Get-CimInstance -CimSession $CimSession -ClassName Win32_LogicalDisk -Filter "DriveType = 3" -ErrorAction Stop
    foreach ($Volume in $Volumes) {
        $Partition = Get-CimAssociatedInstance -CimSession $CimSession -InputObject $Volume -ResultClass Win32_DiskPartition
        $Disk = Get-CimAssociatedInstance -CimSession $CimSession -InputObject $Partition -ResultClassName Win32_DiskDrive

        [PSCustomObject]@{
            PSTypeName         = 'PSP.Inventory.Disk'
            ComputerName       = $CimSession.ComputerName
            DriveLetter        = $Volume.Caption
            Label              = $Volume.VolumeName
            FileSystem         = $Volume.FileSystem
            ClusterSize        = $Partition.BlockSize
            VolumeTotalSizeGB  = [math]::round(($Volume.Size / 1GB), 2)
            VolumeFreeSizeGB   = [math]::round(($Volume.FreeSpace / 1GB), 2)
            VolumeUsedSizeGB   = [math]::round((($Volume.Size - $Volume.FreeSpace) / 1GB), 2)
            DiskFriendlyName   = $Disk.Caption
            DiskTotalSizeGB    = [math]::round(($Disk.Size / 1GB), 2)
            DiskSerialNumber   = $Disk.SerialNumber
            DiskFirmware       = $Disk.FirmwareRevision
            DiskModel          = $Disk.Model
            DiskInterface      = $Disk.InterfaceType
            DiskNumber         = $Disk.Index
            PartitionNumber    = $Partition.Index
            IsPrimaryPartition = $Partition.PrimaryPartition
            IsBootPartition    = $Partition.BootPartition
            InventoryDate      = (Get-Date)
        }
    }
}