Listar espaço físico na unidade

Eu tenho cerca de 200 servidores e preciso obter o espaço em disco e os detalhes do espaço da unidade lógica (espaço livre, espaço usado e espaço total).

Aqui está minha consulta do PowerShell.

$infoObjects = New-Object PSObject
foreach ($machine in $servers) {
  $counts = Get-WmiObject -Query "SELECT * FROM Win32_DiskDrive" -ComputerName $machine
  $total_disk =  @($counts).Count
  $i = 0
  $total_disk = $total_disk -1

  for (; $i -le $total_disk; $i++) {
    $a = $i
    $a  = Get-WmiObject -Query "SELECT * FROM Win32_DiskDrive WHERE DeviceID='\\\\.\\PHYSICALDRIVE$i'" -ComputerName $machine

    $b = $i
    $b = [math]::round($a.size /1GB)

    Add-Member -InputObject $infoObject -MemberType NoteProperty -Name "Physical_Disk $i" -Value $b
  }
  $infoObject | Export-Csv -Path Inventory.csv -Append -Force -NoTypeInformation 
}

Ele está me dando a saída desejada, mas se alguns dos serverd tiverem mais de um disco ou tiverem mais unidade lógica, a saída ficará bloqueada com esse número de unidades do primeiro servidor. Não está me dando saída no arquivo CSV do restante das unidades de outros servidores.

Aqui está o exemplo sobre o que estou dizendo.

ServerName Physical_Disk 0 Physical_Disk 1 Physical_Disk 2 Physical_Disk 3
Server1 100 20  40
Server2 85
Server3 60  450 200 420
Server4 60
Server5 60                  
Server10    55  20  40

Se parece que não sou capaz de explicar o problema. Deixe-me tentar de novo.

O primeiro servidor possui 2 unidades físicas que estão chegando no meu arquivo de saída (CSV).O segundo servidor também possui 2 unidades físicas que também estão no arquivo CSV.Mas o terceiro servidor tem mais de 2 unidades e apenas 2 unidades estão aparecendo na saída.

questionAnswers(3)

yourAnswerToTheQuestion