We recently had, after we migrated from vSphere 4 to vSphere 5, a memory limit in size of the configured memory on each and every VM. Since memory limits on VM level pretty much destroy performance, I went ahead an wrote this simple script to remove all memory limits on all VMs that don’t have “Unlimited” configured:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
param( [string] $vCenter )

# Add the VI-Snapin if it isn't loaded already
if ( (Get-PSSnapin -Name "VMware.VimAutomation.Core" -ErrorAction SilentlyContinue) -eq $null )
{
	Add-PSSnapin -Name "VMware.VimAutomation.Core"
}

If ( !($vCenter) )
{
	Write-Host
	Write-Host "cluster-remove-mem-limits: <vcenter-server>"
	Write-Host
	Write-Host "   <vcenter-server>  - DNS name of your vCenter server."
	Write-Host
	exit 1
}

Connect-VIServer -Server $vCenter

Get-VM | Get-VMResourceConfiguration | Where-Object { $_.memlimitmb -ne '-1' } |`
	Set-VMResourceConfiguration -memlimitmb $null

Disconnect-VIServer -server $vCenter -Confirm:$false

This script is basically what the guy over at get-admin.com did, just only for memory limits.