Skip to content

Set-ResourcePool

VMware: Modifies a resource pool

#Requires -Version 5.1
#Requires -Modules VMware.VimAutomation.Core
[CmdletBinding()]
Param(
    [Parameter(Mandatory = $true)]
    [string]$VIServer,
    [Parameter(Mandatory = $true)]
    [pscredential]$VICredential,
    [Parameter(Mandatory = $true)]
    [string]$Name,
    [bool]$CpuExpandableReservation,
    [int64]$CpuLimitMhz,
    [int64]$CpuReservationMhz,
    [ValidateSet("Custom", "High", "Low", "Normal")]
    [string]$CpuSharesLevel,
    [string]$NewName,
    [bool]$MemExpandableReservation,
    [decimal]$MemLimitGB,
    [decimal]$MemReservationGB,
    [ValidateSet("Custom", "High", "Low", "Normal")]
    [string]$MemSharesLevel,
    [int32]$NumCpuShares,
    [int32]$NumMemShares
)
Process {
    try {
        $vmServer = Connect-VIServer -Server $VIServer -Credential $VICredential -ErrorAction Stop
        $pool = Get-ResourcePool -Server $vmServer -Name $Name -ErrorAction Stop
        if ($null -eq $pool) { throw "Resource pool $Name not found" }
        $setArgs = @{ ErrorAction = 'Stop'; Server = $vmServer; ResourcePool = $pool; Confirm = $false }
        if ($PSBoundParameters.ContainsKey('CpuExpandableReservation')) { $pool = Set-ResourcePool @setArgs -CpuExpandableReservation $CpuExpandableReservation }
        if ($PSBoundParameters.ContainsKey('CpuLimitMhz')) { $pool = Set-ResourcePool @setArgs -CpuLimitMhz $CpuLimitMhz }
        if ($PSBoundParameters.ContainsKey('CpuReservationMhz')) { $pool = Set-ResourcePool @setArgs -CpuReservationMhz $CpuReservationMhz }
        if ($PSBoundParameters.ContainsKey('CpuSharesLevel')) { $pool = Set-ResourcePool @setArgs -CpuSharesLevel $CpuSharesLevel }
        if ($PSBoundParameters.ContainsKey('MemExpandableReservation')) { $pool = Set-ResourcePool @setArgs -MemExpandableReservation $MemExpandableReservation }
        if ($PSBoundParameters.ContainsKey('MemLimitGB')) { $pool = Set-ResourcePool @setArgs -MemLimitGB $MemLimitGB }
        if ($PSBoundParameters.ContainsKey('MemReservationGB')) { $pool = Set-ResourcePool @setArgs -MemReservationGB $MemReservationGB }
        if ($PSBoundParameters.ContainsKey('MemSharesLevel')) { $pool = Set-ResourcePool @setArgs -MemSharesLevel $MemSharesLevel }
        if ($PSBoundParameters.ContainsKey('NumCpuShares')) { $pool = Set-ResourcePool @setArgs -NumCpuShares $NumCpuShares }
        if ($PSBoundParameters.ContainsKey('NumMemShares')) { $pool = Set-ResourcePool @setArgs -NumMemShares $NumMemShares }
        if ($PSBoundParameters.ContainsKey('NewName')) { $pool = Set-ResourcePool @setArgs -Name $NewName }
        $result = $pool | Select-Object *
        if ($null -ne $result) { $result | Add-Member -NotePropertyName Timestamp -NotePropertyValue (Get-Date -Format "yyyy-MM-dd HH:mm:ss") -PassThru -Force }
    }
    catch { throw }
    finally { if ($null -ne $vmServer) { Disconnect-VIServer -Server $vmServer -Force -Confirm:$false -ErrorAction SilentlyContinue } }
}

IP address or DNS name of the vSphere server

PSCredential object for authenticating with the server

Name of the resource pool to modify

CPU reservation can grow beyond the specified value

CPU usage limit in MHz

Guaranteed CPU in MHz

CPU allocation level: Custom, High, Low, Normal

New name for the resource pool

Memory reservation can grow beyond the specified value

Memory usage limit in GB

Guaranteed memory in GB

Memory allocation level: Custom, High, Low, Normal

Number of CPU shares (used with Custom level)

Number of memory shares (used with Custom level)

An interactive directory of PowerShell scripts.