我使用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创建一个单独的表。我想为所有VM生成一个表,为VM中的每个硬盘驱动器都有一个单独的行。
我相信诀窍在于我如何选择物体并将它们一起管道,但我没有足够的经验来看它是如何做到的。
我不需要HTML格式的报告,CSV就可以了。
答案 0 :(得分:0)
您将每个对象传递到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
):
ConvertTo-Html
要切换为CSV输出,您只需将ConvertTo-Csv
替换为Export-Csv
或this
。
答案 1 :(得分: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) }