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.