I’ve been using the following script to start VMs in a certain order in my home lab. While it probably isn’t the prettiest code, it works. It assumes you are using PowerShell Core on a Mac and are already connected to a vCenter Server before running the script.
In my case I have 4 ESXi hosts that I power on/off on demand (and 2 that run 24×7 where vCenter and Platform Services Controller run). I have my VMs broken out into 3 groups for start order and it waits until VMware Tools is running on each VM in the group before starting the next. So far, for things like vRealize Automation that have multiple VMs and dependencies, it seems to bring everything up correctly.
In the future I may try to make this a little more dynamic and leverage vSphere Tag membership or something along those lines. For the time being any time a new VM is created you’d have to add it to the appropriate group in the script.