In todays short article, I want to show you a couple of examples of managing local Esxi users, with the help of PowerShell – PowerCli and EsxCli.
Connect-VIServer -Server vcenter.some.domain
#for example, we want to make some action on all hosts in the cluster
$hosts=Get-Cluster ClusterName | Get-VMHost
foreach ($vmhost in $hosts){
$esxcli = Get-EsxCli -VMHost $vmhost.name -V2
$esxcli.system.account.list.invoke()
#you can add examples below to that cycle
}
#adding a user
$esxcli = Get-EsxCli -VMHost $vmhost.name -V2
$sAccount = $esxcli.system.account.add.CreateArgs()
$sAccount.Item('description') = 'Test account'
$sAccount.Item('password') = 'verysecretp@ss!@#A'
$sAccount.Item('passwordconfirmation') = 'verysecretp@ss!@#A'
$sAccount.Item('id') = 'test_user'
$esxcli.system.account.add.Invoke($sAccount)
#set a role to the user
$sRole = $esxcli.system.permission.set.CreateArgs()
$sRole.id = 'test_user'
$sRole.role = 'Admin'
$esxcli.system.permission.set.Invoke($sRole)
#update password
$sAccount = $esxcli.system.account.set.CreateArgs()
$sAccount.id = "test_user"
$sAccount.password = "verysecretp@ss!@#A"
$sAccount.passwordconfirmation = "verysecretp@ss!@#A"
$esxcli.system.account.set.Invoke($sAccount)
#remove user
$sAccount = $esxcli.system.account.remove.CreateArgs()
$sAccount.id = "test_user"
$esxcli.system.account.remove.Invoke($sAccount)