2016-07-27 109 views
0

我使用的是this code,我修改了它來刪除一些我不需要的項目,我試圖將輸出合併到一個表中。這一步我已經得到了:將輸出合併到一個表中

$SCVMs | ForEach-Object { 
    $VMName = Get-SCVirtualMachine $_.Name | Select -Expand Name 
    $ReportData = $ReportData + (Get-SCVirtualMachine $_.Name | 
    Get-SCVirtualHardDisk | 
    Select @{Label="VM Name";Expression={$VMName}}, 
      @{Label="VHD Name";Expression={$_.Name}}, 
      @{Label="VHD Location";Expression={$_.Location}}, 
      @{Label="Max Disk Size (GB)";Expression={($_.MaximumSize/1GB)}}, 
      @{Label="Disk Space Used (GB)";Expression={"{0:N2}" -f ($_.Size/1GB)}}, 
      @{Label="Disk Space Used (%)";Expression={[math]::Round((($_.Size/1GB)/($_.MaximumSize/1GB))*100)}}, 
      @{Label="Free Disk Space (GB)";Expression={"{0:N2}" -f (($_.MaximumSize/1GB) - ($_.Size/1GB))}} | 
    ConvertTo-Html -as Table -Fragment) 
} 

報告顯示特定虛擬機的硬盤在同一個表,但它的每個VM創建一個單獨的表。我想爲VM中的每個硬盤驅動器生成一個單獨的表,併爲其分配一行。

我相信訣竅在於我如何選擇對象並將它們一起管道,但我只是沒有足夠的經驗去看到如何去做。

我不需要HTML中的報告,CSV就沒問題。

+0

它在我看來像你有它的要點。你錯過了什麼? – zdan

回答

0

將每個對象管道化爲ConvertTo-Html,以便爲每個對象獲取表格片段。而不是這樣做(並在最上面的循環中追加)將ConvertTo-Html外部ForEach-Object循環。

更改此:

$SCVMs | ForEach-Object { 
    $VMName = ... 
    $ReportData = $ReportData + (Get-SCVirtualMachine $_.Name | 
    Get-SCVirtualHardDisk | 
    Select ... | 
    ConvertTo-Html -as Table -Fragment) 
} 

成這樣:

$ReportData = $SCVMs | ForEach-Object { 
    $VMName = ... 
    Get-SCVirtualMachine $_.Name | 
    Get-SCVirtualHardDisk | 
    Select ... 
} | ConvertTo-Html -as Table -Fragment 

或本(如果需要追加到$ReportData):

$ReportData += $SCVMs | ForEach-Object { 
    $VMName = ... 
    Get-SCVirtualMachine $_.Name | 
    Get-SCVirtualHardDisk | 
    Select ... 
} | ConvertTo-Html -as Table -Fragment 

要切換到CSV輸出你只用ConvertTo-CsvExport-Csv替換ConvertTo-Html

0

只需取出中間變量並從循環中刪除ConvertTo-Html。更好的是直接導出到CSV。像這樣的東西:

$SCVMs | ForEach-Object { 
$VMName = Get-SCVirtualMachine $_.Name | Select -Expand Name 
$ReportData = $ReportData + (Get-SCVirtualMachine $_.Name | Get-SCVirtualHardDisk | Select ` 
    @{Label="VM Name";Expression={$VMName}}, ` 
    @{Label="VHD Name";Expression={$_.Name}}, ` 
    @{Label="VHD Location";Expression={$_.Location}}, ` 
    @{Label="Max Disk Size (GB)";Expression={($_.MaximumSize/1GB)}}, ` 
    @{Label="Disk Space Used (GB)";Expression={"{0:N2}" -f ($_.Size/1GB)}}, ` 
    @{Label="Disk Space Used (%)";Expression={[math]::Round((($_.Size/1GB)/($_.MaximumSize/1GB))*100)}}, ` 
    @{Label="Free Disk Space (GB)";Expression={"{0:N2}" -f (($_.MaximumSize/1GB) - ($_.Size/1GB))}} | ConvertTo-HTML -as Table -Fragment) } 
相關問題