Hi,
I am unable to get the sorting for one column for csv output.
I am getting the output but it is not getting sorted for “RealTime Usage Mhz” column
Please help!!!!
function Get-Ready {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$true)]
[String]$Name) #param
#begin {Add-PSSnapin vmware.vimautomation.core}#begin
process {
$Stattypes = “cpu.usage.average”, “cpu.usagemhz.average”, “cpu.ready.summation”
foreach ($esxi in $(Get-VMHost $Name)) {
$vmlist = $esxi | Get-VM | Where-Object {$_.PowerState -eq “PoweredOn”}
$esxiCPUSockets = $esxi.ExtensionData.Summary.Hardware.NumCpuPkgs
$esxiCPUcores = $esxi.ExtensionData.Summary.Hardware.NumCpuCores/$esxiCPUSockets
$esxiCPUMhz = $esxi.ExtensionData.Summary.Hardware.CpuMhz
$TotalesxiCPUs = $esxiCPUSockets * $esxiCPUcores
$TotalCPUMhz = $TotalesxiCPUs * $esxiCPUMhz
foreach ($vm in $vmlist) {
$VMCPUNumCpu = $vm.NumCpu
$VMCPUCores = $vm.ExtensionData.config.hardware.NumCoresPerSocket
$VMCPUSockets = $VMCPUNumCpu / $VMCPUCores
$GroupedRealTimestats = Get-Stat -Entity $vm -Stat $Stattypes -Realtime -Instance “” -ErrorAction SilentlyContinue | Group-Object MetricId
$RealTimeCPUAverageStat = “{0:N2}” -f $($GroupedRealTimestats | Where {$_.Name -eq “cpu.usage.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$RealTimeCPUUsageMhzStat = “{0:N2}” -f $($GroupedRealTimestats | Where {$_.Name -eq “cpu.usagemhz.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$RealTimeReadystat = $GroupedRealTimestats | Where {$_.Name -eq “cpu.ready.summation”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average
$RealTimereadyvalue = [math]::Round($(($RealTimeReadystat / (20 * 1000)) * 100), 2)
$Groupeddaystats = Get-Stat -Entity $vm -Stat $Stattypes -Start (get-date).AddDays(-1) -Finish (get-date) -IntervalMins 5 -Instance “” -ErrorAction SilentlyContinue | Group-Object MetricId
$dayCPUAverageStat = “{0:N2}” -f $($Groupeddaystats | Where {$_.Name -eq “cpu.usage.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$dayCPUUsageMhzStat = “{0:N2}” -f $($Groupeddaystats | Where {$_.Name -eq “cpu.usagemhz.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$dayReadystat = $Groupeddaystats | Where {$_.Name -eq “cpu.ready.summation”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average
$dayreadyvalue = [math]::Round($(($dayReadystat / (300 * 1000)) * 100), 2)
$Groupedweekstats = Get-Stat -Entity $vm -Stat $Stattypes -Start (get-date).AddDays(-7) -Finish (get-date) -IntervalMins 30 -Instance “” -ErrorAction SilentlyContinue | Group-Object MetricId
$weekCPUAverageStat = “{0:N2}” -f $($Groupedweekstats | Where {$_.Name -eq “cpu.usage.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$weekCPUUsageMhzStat = “{0:N2}” -f $($Groupedweekstats | Where {$_.Name -eq “cpu.usagemhz.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$weekReadystat = $Groupedweekstats | Where {$_.Name -eq “cpu.ready.summation”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average
$weekreadyvalue = [math]::Round($(($weekReadystat / (1800 * 1000)) * 100), 2)
$Groupedmonthstats = Get-Stat -Entity $vm -Stat $Stattypes -Start (get-date).AddDays(-30) -Finish (get-date) -IntervalMins 120 -Instance “” -ErrorAction SilentlyContinue | Group-Object MetricId
$monthCPUAverageStat = “{0:N2}” -f $($Groupedmonthstats | Where {$_.Name -eq “cpu.usage.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$monthCPUUsageMhzStat = “{0:N2}” -f $($Groupedmonthstats | Where {$_.Name -eq “cpu.usagemhz.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$monthReadystat = $Groupedmonthstats | Where {$_.Name -eq “cpu.ready.summation”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average
$monthreadyvalue = [math]::Round($(($monthReadystat / (7200 * 1000)) * 100), 2)
$Groupedyearstats = Get-Stat -Entity $vm -Stat $Stattypes -Start (get-date).AddDays(-365) -Finish (get-date) -IntervalMins 1440 -Instance “” -ErrorAction SilentlyContinue | Group-Object MetricId
$yearCPUAverageStat = “{0:N2}” -f $($Groupedyearstats | Where {$_.Name -eq “cpu.usage.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$yearCPUUsageMhzStat = “{0:N2}” -f $($Groupedyearstats | Where {$_.Name -eq “cpu.usagemhz.average”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average)
$yearReadystat = $Groupedyearstats | Where {$_.Name -eq “cpu.ready.summation”} | Select-Object -ExpandProperty Group | Measure-Object -Average Value | Select-Object -ExpandProperty Average
$yearreadyvalue = [math]::Round($(($yearReadystat / (86400 * 1000)) * 100), 2)
$data = New-Object psobject
$data | Add-Member -MemberType NoteProperty -Name VM -Value $vm.name
$data | Add-Member -MemberType NoteProperty -Name VMTotalCPUs -Value $VMCPUNumCpu
$data | Add-Member -MemberType NoteProperty -Name VMTotalCPUSockets -Value $VMCPUSockets
$data | Add-Member -MemberType NoteProperty -Name VMTotalCPUCores -Value $VMCPUCores
$data | Add-Member -MemberType NoteProperty -Name “RealTime Usage Average%” -Value $RealTimeCPUAverageStat
$data | Add-Member -MemberType NoteProperty -Name “RealTime Usage Mhz” -Value $RealTimeCPUUsageMhzStat
$data | Add-Member -MemberType NoteProperty -Name “RealTime Ready%” -Value $RealTimereadyvalue
$data | Add-Member -MemberType NoteProperty -Name “Day Usage Average%” -Value $dayCPUAverageStat
$data | Add-Member -MemberType NoteProperty -Name “Day Usage Mhz” -Value $dayCPUUsageMhzStat
$data | Add-Member -MemberType NoteProperty -Name “Day Ready%” -Value $dayreadyvalue
$data | Add-Member -MemberType NoteProperty -Name “week Usage Average%” -Value $weekCPUAverageStat
$data | Add-Member -MemberType NoteProperty -Name “week Usage Mhz” -Value $weekCPUUsageMhzStat
$data | Add-Member -MemberType NoteProperty -Name “week Ready%” -Value $weekreadyvalue
$data | Add-Member -MemberType NoteProperty -Name “month Usage Average%” -Value $monthCPUAverageStat
$data | Add-Member -MemberType NoteProperty -Name “month Usage Mhz” -Value $monthCPUUsageMhzStat
$data | Add-Member -MemberType NoteProperty -Name “month Ready%” -Value $monthreadyvalue
$data | Add-Member -MemberType NoteProperty -Name “Year Usage Average%” -Value $yearCPUAverageStat
$data | Add-Member -MemberType NoteProperty -Name “Year Usage Mhz” -Value $yearCPUUsageMhzStat
$data | Add-Member -MemberType NoteProperty -Name “Year Ready%” -Value $yearreadyvalue
$data | Add-Member -MemberType NoteProperty -Name VMHost -Value $esxi.name
$data | Add-Member -MemberType NoteProperty -Name VMHostCPUSockets -Value $esxiCPUSockets
$data | Add-Member -MemberType NoteProperty -Name VMHostCPUCores -Value $esxiCPUCores
$data | Add-Member -MemberType NoteProperty -Name TotalVMhostCPUs -Value $TotalesxiCPUs
$data | Add-Member -MemberType NoteProperty -Name TotalVMhostCPUMhz -Value $TotalCPUMhz
$data
} #foreach ($vm in $vmlist)
}#foreach ($esxi in $(Get-VMHost $Name))
} #process
} #Function Get-Ready
Get-VMHost ‘esx10’ | Get-Ready | Sort “RealTime Usage Mhz” -Descending | Export-CSV -Path “D:reportsoutput.csv” -NoTypeInformation
Output
VM | VMTotalCPUs | VMTotalCPUSockets | VMTotalCPUCores | RealTime Usage Average% | RealTime Usage Mhz |
APP88 | 2 | 1 | 2 | 1.85 | 7699.83 |
APP89 | 2 | 1 | 2 | 1.7 | 491.54 |
APP90 | 4 | 2 | 2 | 8.38 | 95.44 |
DB123 | 4 | 2 | 2 | 89.25 | 9,638.60 |