0
我想從多臺計算機獲取磁盤信息並輸出它。powershell將WMI查詢結果合併到一個表中
這工作:
foreach ($args in $file) {
get-WmiObject win32_logicaldisk -Credential $cre -ComputerName $args -Filter "Drivetype=3" |
ft SystemName,DeviceID,VolumeName,@{Label="Total Size";Expression={$_.Size/1gb -as [int] }},@{Label="Free Size";Expression={$_.freespace/1gb -as [int] }} -autosize
}
但輸出看起來是這樣的:
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer1 C: OS 100 31
Computer1 D: DATA 500 200
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer2 C: OS 110 48
Computer2 D: DATA 500 201
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer3 C: OS 100 38
Computer3 D: DATA 500 260
我想他們結合使輸出看起來是這樣的:
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer1 C: OS 100 31
Computer1 D: DATA 500 200
Computer2 C: OS 110 48
Computer2 D: DATA 500 201
Computer3 C: OS 100 38
Computer3 D: DATA 500 260
我已經看着創建一個新的對象,但我不確定如何將WMI查詢結果添加到同一標題下的循環中的該對象。
多一點,爲什麼這就像它的作用:當你需要顯示它
然後使用
Format-Table
。在OP中使用的'ForEach'循環將分別處理和輸出每個項目到自己執行的'Format-Table'。管道中的ForEach-Object函數,並且它在單獨處理每個項目時,它收集管道下一部分的所有輸出的結果,並且執行'Format-Table' cmdlet的一次執行所有的數據。 – TheMadTechnician這是完美的,謝謝。我相信我明白For-EachObject的工作原理 – ElectronicDrug
另外,我相信我正確使用了$ args。進一步在我沒有包括的腳本是'$ defaultServerList ='computers.txt''和'$ file = get-Content $ defaultServerList' – ElectronicDrug