2,187
edits
(→Script Extracts: Added "VM's Effective CPU Shares") |
(→VM's Effective CPU Shares: Updated script (handles VM's in root 'Resources' pool)) |
||
Line 453: | Line 453: | ||
Log "Getting resource pools..." | Log "Getting resource pools..." | ||
$ResPools = Get-ResourcePool | $ResPools = Get-ResourcePool | ||
ForEach ($ResPool in $ResPools) { | ForEach ($ResPool in $ResPools) { | ||
$VMs = Get-VM -Location $ResPool -NoRecursion | Where {$_.PowerState -eq "PoweredOn"} | |||
If (!$VMs) { #Skip any resource pools with no VM's | |||
Log ("Skipping " + $ResPool.Name + " (no VMs)") | |||
Continue | |||
} | |||
$rSummary = $tSummary.NewRow() | $rSummary = $tSummary.NewRow() | ||
Line 462: | Line 467: | ||
$rSummary.CPU_Shares = $ResPool.NumCpuShares | $rSummary.CPU_Shares = $ResPool.NumCpuShares | ||
$VMs | If (!$VMs.Count) { # If only 1 VM in ResPool we don't get a normal array returned (so !VMs.Count is NULL) | ||
$rSummary.VMs = 1 | |||
} else { | |||
$rSummary.VMs = $VMs.Count | |||
} | |||
$rSummary.Weighted = $rSummary.CPU_Shares / $rSummary.VMs | $rSummary.Weighted = $rSummary.CPU_Shares / $rSummary.VMs | ||
$tSummary.Rows.Add($rSummary) | $tSummary.Rows.Add($rSummary) | ||
Line 483: | Line 491: | ||
$rDetail.Res_CPU_Shares = $ResPool.NumCpuShares | $rDetail.Res_CPU_Shares = $ResPool.NumCpuShares | ||
$rDetail.VM_CPU_Shares = $VMShares[$vm.Name] | $rDetail.VM_CPU_Shares = $VMShares[$vm.Name] | ||
$rDetail.Eff_VM_Shares = $ResPool.NumCpuShares * ($rDetail.VM_CPU_Shares / $totShares) | If ($ResPool.Name -eq "Resources") { | ||
$rDetail.Eff_VM_Shares = $rDetail.VM_CPU_Shares | |||
} else { | |||
$rDetail.Eff_VM_Shares = $ResPool.NumCpuShares * ($rDetail.VM_CPU_Shares / $totShares) | |||
} | |||
$tDetail.Rows.Add($rDetail) | $tDetail.Rows.Add($rDetail) | ||
} | } |