Adapted from Change root password on all (or some) vSphere h… | VMware Communities.
$vCenter = "vcenterserver" $oldpw = "oldpwd" $newpw = "newpwd" connect-viserver -server $vCenter -Credential (Get-Credential) $hosts = @() write-host "Querying for ESXi hosts..." Get-VMHost | sort | Where {$_.ConnectionState -eq "Connected" -or $_.ConnectionState -eq "Maintenance"} | Get-View | Where {$_.Summary.Config.Product.Name -match "i"} | % { $hosts+= $_.Name } Disconnect-VIServer -confirm:$false foreach ($vmhost in $hosts) { write-host "Connecting to $vmhost..." connect-viserver -server $vmhost -user root -password "$oldpw" write-host "Changing root password on $vmhost..." Set-VMHostAccount -UserAccount root -password "$newpw" Disconnect-VIServer -confirm:$false }