A few days back I created a vSphere cluster with 32 ESXi hosts and I really didn’t want to add all these hosts using the UI so I decided to put together a short powercli script to manage this.

The script that was tested using the following software versions:

VMware vCenter Server 6.5

VMware ESXi 6.5 build 5146846

VMware PowerCLI 6.5 Release 1 build 4624819

# PowerCLI script to add ESXi hosts to vCenter Server # Version 1.0 # Magnus Andersson – Sr Staff Solution Architect @Nutanix # # # --------------------------------------------------- # Edit the information below to match your environment # # Specify vCenter Server, vCenter Server username, vCenter Server user password, vCenter Server location which can be the Datacenter, a Folder or a Cluster (which I used). $vCenter="vcenter01.vcdx56.local" $vCenterUser="mandersson@vcdx56.local" $vCenterUserPassword="not-secret" $vcenterlocation="npx005-01" # # Specify the ESXi host you want to add to vCenter Server and the user name and password to be used. $esxihosts=("esxinut001.vcdx56.local","esxinut002.vcdx56.local","esxinut003.vcdx56.local","esxinut004.vcdx56.local") $esxihostuser="root" $esxihostpasswd="not-secret" # # You don't have to change anything below this line # --------------------------------------------------- # #Connect to vCenter Server write-host Connecting to vCenter Server $vcenter -foreground green Connect-viserver $vCenter -user $vCenterUser -password $vCenterUserPassword -WarningAction 0 | out-null # write-host -------- write-host Start adding ESXi hosts to the vCenter Server $vCenter write-host -------- # # Add ESXi hosts foreach ($esxihost in $esxihosts) { Add-VMHost $esxihost -Location $vcenterlocation -User $esxihostuser -Password $esxihostpasswd } # # Disconnect from vCenter Server write-host "Disconnecting to vCenter Server $vcenter" -foreground green disconnect-viserver -confirm:$false | out-null 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # PowerCLI script to add ESXi hosts to vCenter Server # Version 1.0 # Magnus Andersson – Sr Staff Solution Architect @Nutanix # # # --------------------------------------------------- # Edit the information below to match your environment # # Specify vCenter Server, vCenter Server username, vCenter Server user password, vCenter Server location which can be the Datacenter, a Folder or a Cluster (which I used). $ vCenter = "vcenter01.vcdx56.local" $ vCenterUser = [email protected]" $ vCenterUserPassword = "not-secret" $ vcenterlocation = "npx005-01" # # Specify the ESXi host you want to add to vCenter Server and the user name and password to be used. $ esxihosts = ( "esxinut001.vcdx56.local" , "esxinut002.vcdx56.local" , "esxinut003.vcdx56.local" , "esxinut004.vcdx56.local" ) $ esxihostuser = "root" $ esxihostpasswd = "not-secret" # # You don't have to change anything below this line # --------------------------------------------------- # #Connect to vCenter Server write - host Connecting to vCenter Server $ vcenter - foreground green Connect - viserver $ vCenter - user $ vCenterUser - password $ vCenterUserPassword - WarningAction 0 | out - null # write - host -- -- -- -- write - host Start adding ESXi hosts to the vCenter Server $ vCenter write - host -- -- -- -- # # Add ESXi hosts foreach ( $ esxihost in $ esxihosts ) { Add - VMHost $ esxihost - Location $ vcenterlocation - User $ esxihostuser - Password $ esxihostpasswd } # # Disconnect from vCenter Server write - host "Disconnecting to vCenter Server $vcenter" - foreground green disconnect - viserver - confirm : $ false | out - null

Below is the script output when running in my lab environment.

If you want to limit the script output you can add “| out-null” to the add-vmhost section so the new line would be:

Add-VMHost $esxihost -Location $vcenterlocation -User $esxihostuser -Password $esxihostpasswd” | out-null

The new output will then be according to the below output:

Happy PowerCLI scripting