Set-VMResourceConfiguration
VMware: Configures resource allocation between the virtual machine
#Requires -Version 5.1
#Requires -Modules VMware.VimAutomation.Core
[CmdletBinding(DefaultParameterSetName = "byName")]
Param(
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$VIServer,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[pscredential]$VICredential,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[string]$VMId,
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$VMName,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[string]$DiskName,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[int64]$CpuLimitMhz,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[int64]$CpuReservationMhz,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[ValidateSet("Custom", "High", "Low", "Normal")]
[string]$CpuSharesLevel,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[decimal]$MemLimitGB,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[decimal]$MemReservationGB,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[ValidateSet("Custom", "High", "Low", "Normal")]
[string]$MemSharesLevel,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[int32]$NumCpuShares,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[int32]$NumMemShares
)
Process {
$vmServer = $null
try {
$vmServer = Connect-VIServer -Server $VIServer -Credential $VICredential -ErrorAction Stop
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
if ($PSCmdlet.ParameterSetName -eq "byID") {
$machine = Get-VM -Server $vmServer -Id $VMId -ErrorAction Stop
}
else {
$machine = Get-VM -Server $vmServer -Name $VMName -ErrorAction Stop
}
$disk = $null
$resConfig = Get-VMResourceConfiguration -Server $vmServer -VM $machine -ErrorAction Stop
if (-not [System.String]::IsNullOrWhiteSpace($DiskName)) {
$disk = Get-HardDisk -VM $machine -Name $DiskName -Server $vmServer -ErrorAction Stop
}
$cmdArgs = @{ ErrorAction = 'Stop'; Configuration = $resConfig; Confirm = $false }
if ($null -ne $disk) { $cmdArgs.Add('Disk', $disk) }
if ($PSBoundParameters.ContainsKey('CpuLimitMhz')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -CpuLimitMhz $CpuLimitMhz }
if ($PSBoundParameters.ContainsKey('CpuReservationMhz')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -CpuReservationMhz $CpuReservationMhz }
if ($PSBoundParameters.ContainsKey('CpuSharesLevel')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -CpuSharesLevel $CpuSharesLevel }
if ($PSBoundParameters.ContainsKey('MemLimitGB')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -MemLimitGB $MemLimitGB }
if ($PSBoundParameters.ContainsKey('MemReservationGB')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -MemReservationGB $MemReservationGB }
if ($PSBoundParameters.ContainsKey('MemSharesLevel')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -MemSharesLevel $MemSharesLevel }
if ($PSBoundParameters.ContainsKey('NumCpuShares')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -NumCpuShares $NumCpuShares }
if ($PSBoundParameters.ContainsKey('NumMemShares')) { $resConfig = Set-VMResourceConfiguration @cmdArgs -NumMemShares $NumMemShares }
$result = $resConfig | Select-Object *
foreach ($item in $result) {
$item | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $timestamp -Force
Write-Output $item
}
}
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
ID of the virtual machine
Name of the virtual machine
Name of the virtual hard disk to configure
CPU usage limit in MHz
Guaranteed CPU MHz
CPU allocation level
Memory usage limit in GB
Guaranteed memory in GB
Memory allocation level
Number of CPU shares
Number of memory shares