2015-03-20 4 views
0

У меня есть сценарий PowerShell, который перебирает пулов VMware ресурсов получать от них информацию в кластере:Powershell ConvertTo-HTML Таблицы без других тегов

Foreach($cluster in $clusters){ 
     Add-Content $report "<h3>$cluster</h3>" 

     $rpools = $null 
     [array]$rpools = Get-ResourcePool -Location $cluster 
     ### Get total memory in cluster ## 
     $clusterhosts = get-vmhost -Location $cluster 
     $totalclustermem = ($clusterhosts.memorytotalmb | measure -sum).sum 
     $totalclustermem = "{0:N0}" -f $totalclustermem 


     $objAverage = $null 
     $sharesallocation = $null 
     $sharesallocation = @() 

     ## Enumerate Members of RPools 
     Foreach ($rpool in $rpools){ 
      If ($rpool.name -ne "Resources"){ 

       $rpoolvms = $rpool | Get-VM 
       if($rpoolvms -ne 0){ 
        $totalvms = ($rpool | Get-VM).count 
        $totalram = "{0:N0}" -f ($rpoolvms.MemoryMB | Measure-Object -sum).sum 
        $totalcpu = "{0:N0}" -f ($rpoolvms.NumCPU | Measure-Object -sum).sum 


        ### Calculate current Shares ### 

        [int]$totalmemshares = $rpool.NummemShares 
        [int]$totalcpushares = $rpool.NumCpuShares 

        $totalpercpu = "{0:N2}" -f ($totalcpushares/$totalcpu) 
        $totalpermem = "{0:N2}" -f ($totalmemshares/$totalram) 

        $objAverage = New-Object System.Object 
        $objAverage | Add-Member -type NoteProperty -name ResourcePool -value $rpool.name 
        $objAverage | Add-Member -type NoteProperty -name "RAM Shares" -value $totalmemshares 
        $objAverage | Add-Member -type NoteProperty -name "CPU Shares" -value $totalcpushares 

        $objAverage | Add-Member -type NoteProperty -name "Total VMs" -value $totalvms 
        $objAverage | Add-Member -type NoteProperty -name "Total VM RAM (MB)" -value $totalram 
        $objAverage | Add-Member -type NoteProperty -name "Total VM CPU" -value $totalcpu 
        $objAverage | Add-Member -type NoteProperty -name "Shares Per MB RAM" -value $totalpermem 
        $objAverage | Add-Member -type NoteProperty -name "Shares Per CPU" -value $totalpercpu 
        if($reserved){ 
         $objAverage | Add-Member -type NoteProperty -name "RAM Reservation" -value $rpool.MemReservationMB 
         $objAverage | Add-Member -type NoteProperty -name "CPU Reservation" -value $rpool.MemReservationMhz 
        } 
        if($limit){ 
         $objAverage | Add-Member -type NoteProperty -name "RAM Limit" -value $rpool.MemLimitMB 
         $objAverage | Add-Member -type NoteProperty -name "CPU Limit" -value $rpool.CpuLimitMhz 
        } 

        $sharesallocation += $objAverage 
       } 
      } 
     } 
     $sharesallocation | ConvertTo-Html -head $HtmlHeader | Add-Content $report 

    } 

Проблема у меня есть, что использование ConvertTo-Html является добавление теги каждый раз, когда он проходит. Все, что я хочу сделать, это выводить таблицу HTML без другого html, как я мог бы это достичь?

+0

Выдвиньте shareallocation вне foreach (и конвертируйте html conseguently). –

+0

@AdrianoRepetti, который не работает как цикл, затем уничтожает содержимое из предыдущего. –

+0

Конечно, вы должны сделать это список ... –

ответ

3

Если вы просто хотите таблицу HTML, используйте -Fragment переключатель:

$sharesallocation | ConvertTo-Html -Fragment | Add-Content $report 

Вам нужно позаботиться о добавлении заголовка и тела теги к $ отчета вокруг этого.

+0

Спасибо, что сработал, я был смущен, почему -Fragment was not work then понял, что это было связано с наличием там -head. –

Смежные вопросы