PowerShell Friday: Adding Memory with PowerCLI
Just before the holidays we’ve got a small PowerCLI onliner for you. Nothing fancy, but still useful.
There are times that your virtual machine doesn’t have enough memory. Yes, you can go into the vSphere Client to change the memory configuration, but where is the fun in that? Why not do everything from the command line? And preferably by the use of PowerCLI?
This oneliner will set the memory of a specific virtual machine.
Get-VM -Name MyVM | Set-VM -MemoryGB 2
You get prompted if you’re sure that you want to change the VM.
If you want to specifiy less than a GB you still use the -MemoryGB parameter, but with a decimal:
Get-VM -Name MyVM |Set-VM -MemoryGB 0.75
This cmdlet will give your virtual machine 768 MB memory.
Before adding memory with PowerCLI
Of course you want to know how much memory your virtual machine has before you add something to it. To accomplish this you use the following:
Get-VM -Name MyVM
Or, if you want a list of all VMs with their names and memory configuration:
Get-VM -Name MyVM | FT Name, MemoryGB
How about reducing memory?
Ofcourse, you also can reduce memory, just set the memory to something lower than the machine already has. For this the machine has to be powered off
Get-VM -Name MyVM | Shutdown-VMGuest|Set-VM -MemoryGB 0.25
This online shuts down the virtual machine and set its memory to 256MB.
Some tricks with PowerCLI and Memory
Now that you can get and change the memory of a virtual machine from the command line you can do all kinds of crazy things with it. With one command you can double the memory
set-vm -VM MyVM -MemoryGB ((Get-VM -Name MyVM).MemoryGB * 2)
Or set the memory of one VM to the same value as another VM.
Set-VM -VM MyVM -MemoryGB (Get-VM -Name MyVM2).MemoryGB
The Sky is the limit.
Get-VM -Name MyVM | Set-VM -MemoryGB 2 actually doesn’t add memory, it sets the total memory for the VM.
If your VM has 2 Gb and you want to add another 2 the syntax will bet Get-VM -Name MyVM | Set-VM -MemoryGB 4
Nonetheless, thank you for this article, really handy.
You are totally correct. I changed the text so it reflects that.