我有大約200臺服務器,我需要得到磁盤空間&邏輯驅動器空間信息(可用空間,使用空間&總空間)。列出物理驅動器空間
這裏是我的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
}
這是給我想要的輸出,但如果服務器D的一些有多個磁盤或有更多的邏輯驅動器比輸出被套牢,這個數字第一臺服務器的驅動器。它不會在其他服務器的其餘驅動器的CSV文件中輸出。
這裏是關於我在說什麼的例子。
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
如果看起來我無法解釋問題。讓我再嘗試一次。
- 第一臺服務器有2個物理驅動器進入我的輸出文件(CSV)。
- 第二臺服務器還有2個物理驅動器也在CSV文件中。
- 但第三臺服務器有2個以上的驅動器,只有2個驅動器顯示在輸出中。
你是有限的,因爲第一個服務器只有兩個磁盤。如果您希望以這種方式對它們進行分組,則需要爲最大數量的磁盤創建空屬性。這就是PowerShell將數據分組在一起以便顯示的方式。第一臺服務器沒有這些額外的磁盤。您可以人爲地爲X驅動器創建磁盤值,其中X大約爲10.大多數服務器沒有10個磁盤。 – Matt
示例數據不包含所有你在你的第一句話 – Matt
要求對於你的未來的自己的神智着想的細節,請使用有意義的變量名。他們不需要額外的費用。 – alroc