Solved

Shutdown Grouping of VM's

  • 13 February 2019
  • 6 replies
  • 2582 views

Badge +1
Hi.
We have a large grouping of VM's that are not always required to be running and would like to find a way to shutdown these particular VM's on a sunday night.

Now anyone know how to find a group of VM's (either via label, project, category etc) and pass a shutdown command. Ideally I would like to do this via PowerShell but I will take anything.
icon

Best answer by devwangler 12 March 2019, 01:58

View original

This topic has been closed for comments

6 replies

Userlevel 2
Badge +3
Well done!

Thank you for sharing this with the Community.
Badge +1
How I solved this:

Created a category in Prism, assigned all the VM's that I want to shutdown to the category.

Then I wrote the script below which queries the category via REST API into a hash table. Then using the Nutanix PS cmdlets, I iterate the hash table and power down the VM's.

It now runs via a scheduled task once a week, powering down all non-essential VM's.

https://github.com/leepryor/Nutanix_Powershell/blob/master/Shutdown-Categorized-VMs.ps1
Userlevel 2
Badge +3
Also check out this from Steve (aka The Dude):

code:
http://stevenpoitras.com/


I know it relates to restoring the VMs in a PD but the code has some omph.
Userlevel 2
Badge +3
Could you use the REST API

code:
Get vms


to get the raw list of VMs and then pipe the results thru a filtered grep then pipe the results of that to the LINUX command above?

Let us know how you make out.
Badge +1
Thanks Roberteo.

I'm looking for something in AHV. That way the grouping can be dynamic and we don't have to maintain a listing of VM's that I would have to iterate through.

I have found that in Prism we can group machines with Categories. We can interrogate the categories via REST API and then shut them down... I just now need to learn about REST API's and how to interrogate them 🙂
Userlevel 2
Badge +3
There are a number of ways of listing the VMs and then filtering for the 'group' you want but this will be dependent on your naming convention.

To shutdown a VM you have multiple options as well:
Windows:
DOS Cmd:
code:
Shutdown / /m \\{computer} {options}

PowerShell:
code:
Stop-Computer –computer {ComputerName} –Credential {AccountID}


Linux:
code:
ssh -t {user}@{ComputerIP} 'sudo shutdown -h now'


So all you would have to do was loop thru the above with the filtered computer list.