This article is part of a series of articles about issues I encountered during implementation of a vSphere stretched cluster based on vSphere 6.7 U1.
You can find the introduction article here
Issue
All the hosts are delivered with 6.5 U2 pre-installed, and they have their own root password. For the implementation we want to have just one general root account password. So after adding all the hosts to the cluster I want to change the root password with powercli. But I tripped over a bug in get-esxcli (thanks to this thread ). The ‘&’ character is not correctly being interpreted when using get-esxli.
The script I wrote checks if the new password contains that character and will kindly ask to change it. After succesfull validation of the password it will apply it to all selected esxi hosts.
I
#-- select one or more hosts [array]$esxiHosts=get-vmhost | select name | sort | out-gridview -Title "Select one or more ESXi Hosts"-OutputMode Multiple if ($esxiHosts.count -eq 0) { write-host "No host(s) selected, will exit." -foregroundcolor yellow exit } #-- ask for root password and validate it agains known bug Do { $newCredential = Get-Credential -Username root -Message "Enter the password for the ESXi root account." $isValid=$true if ($newCredential.getNetworkCredential().Password -imatch "[\&]") { $isValid=$false write-host"Password contains character & which get-esxcli can't handle (bug)..... please consider a different password." -foregroundcolor yellow } } until ($isValid) #-- change root password for all selected esxi hosts foreach ($esxiHost in $esxiHosts) { $esxiHost=get-vmhost -Name -$esxiHost.name $esxiCli=get-esxcli -v2 -vmhost $esxiHost $arguments=$esxcli.system.account.set.createArgs() $arguments.id=$newCredential.UserName $arguments.password=$newCredential.GetNetworkCredential().password $arguments.passwordconfirmation=$arguments.password try {$esxcli.system.account.set.Invoke($arguments)} catch{write-host "Setting password failed for " $esxiHost.name -ForegroundColor Yellow} }
One thought on “Issue 1 – changing root password”