I'm trying to write a script to gracefully shutdown all the vm's on a specific host. I can make it work just fine by connecting directly to the host with:
get-esx myesxhost -user root -password password
that works really well. But what I want to do is connect via VC to use AD accounts rather than using host root accounts.
connect-viserver (or get-vc) myvcserver -user me -password password
shutdown-vmguest * -server myesxhost
gets me an error saying "cannot bind parameter 'Server". Cannot convert "myesxhost" to "VMware.VimAutomation.Types.VIServer."
I looked around and found some info that when you're connected to VC, a host doesn't count as a "server" when using the -Server parameter. Or something like that. I'm new to scripting so apologies if I'm getting that wrong.
So I tried something I found on the forum here, where you create a variable for $server that's tied to a host
$server = get-vmhost myesxhost
And then I tried:
shutdown-vmguest * -server $server
and I get the same error as before, including the correct hostname. So I know that I was successful in creating $server, but apparantly that's not the right solution to the problem.
You can shut down vm's on specific host using following command:
Get-VMHost <myhost> | Get-VM | Shutdown-VMGuest
1. Server parameter is used to specify different connections returned by the Connect-VIServer. You can used it when writing script managing multiple VI servers or multiple esx hosts not manged by 1 VC
2. Using Location parameter of the Get-VM you can specify not only VMHost but resource pools,datacenters, cluster and folders