Skip to content

VirtuallyThatGuy

Anything VMware , PowerCLI, PowerShell, Automation and some Windows

Menu
  • Home
  • PowerCLI
  • VMware
  • Automation
  • Windows
  • About
Menu

Script: How to create a new user and add it to a role on ESXi host Using PowerShell or Powercli – VirtuallyThatGuy

Posted on September 19, 2021March 4, 2024 by VirtuallyThatGuy

This is a quick post on how to create a new user and add it to a role on ESXi host Using PowerShell or Powercli.

## This script creates a new user and adds the user to a role on the ESX host:

 

$NewUser​​ =​​ 'New_user_name'

$NewUserPassword​​ =​​ ‘New_user_Password'

$NewUserDesc​​ =​​ 'New_user_description'

$HOSTCredentials​​ =​​ Get-Credential​​ -Credential​​ root

$ESXhost​​ =​​ 'ESXi_HOST'

​​ 

Connect-VIServer​​ $ESXhost​​ -Credential​​ $HOSTCredentials

New-VMHostAccount​​ -Id​​ $NewUser​​ -Password​​ $NewUserPassword​​ -Description​​ $NewUserDesc​​ -UserAccount​​ -Server​​ $ESXhost​​ -AssignGroups​​ users

$AuthMgr​​ =​​ Get-View​​ (Get-View​​ ServiceInstance).Content.AuthorizationManager

$Entity​​ =​​ Get-Folder​​ ha-folder-root​​ |​​ Get-View

$Perm​​ =​​ New-Object​​ VMware.Vim.Permission

$Perm.entity​​ =​​ $Entity.MoRef

$Perm.group​​ =​​ $false

$Perm.principal​​ =​​ $NewUser

$Perm.propagate​​ =​​ $true

# You can either specify roleID or use the line below if you know the role name.

# $Perm.roleId = ($AuthMgr.RoleList | where {$_.Name -eq​​ "ReadOnly"}).RoleId

$Perm.roleId​​ =​​ "-2"

$AuthMgr.SetEntityPermissions($Entity.MoRef,$Perm)

​​ 

Disconnect-VIServer​​ -Server​​ $ESXhost​​ -Confirm:$false

 

 

## Here is the list of common roles / role IDs:

 

RoleName

Label

RoleId

NoAccess

No access

-5

Anonymous

Anonymous

-4

View

View

-3

ReadOnly

Read-only

-2

Admin

Administrator

-1

VirtualMachinePowerUser

Virtual machine power user (sample)

4

VirtualMachineUser

Virtual machine user (sample)

5

ResourcePoolAdministrator

Resource pool administrator (sample)

6

VMwareConsolidatedBackupUser

VMware Consolidated Backup user (sample)

7

DatastoreConsumer

Datastore consumer (sample)

8

NetworkConsumer

Network consumer (sample)

9

 

 

## For the full list of Roles you have in your environment please use this script:

 

$report​​ =@()

$authMgr​​ =​​ Get-View​​ AuthorizationManager

foreach($role​​ in​​ $authMgr.RoleList){

$row​​ =​​ ""​​ |​​ Select​​ RoleName,​​ Label,​​ RoleId

$row.RoleName​​ =​​ $role.Name

$row.Label​​ =​​ $role.Info.Label

$row.RoleId​​ =​​ $role.RoleId

$report​​ +=​​ $row

}

$report​​ 

 

## This script creates a new user and adds the user to a role on the ESX host:

$NewUser = 'New_user_name'
$NewUserPassword = ‘New_user_Password'
$NewUserDesc = 'New_user_description'
$HOSTCredentials = Get-Credential -Credential root
$ESXhost = 'ESXi_HOST'
 
Connect-VIServer $ESXhost -Credential $HOSTCredentials
New-VMHostAccount -Id $NewUser -Password $NewUserPassword -Description $NewUserDesc -UserAccount -Server $ESXhost -AssignGroups users
$AuthMgr = Get-View (Get-View ServiceInstance).Content.AuthorizationManager
$Entity = Get-Folder ha-folder-root | Get-View
$Perm = New-Object VMware.Vim.Permission
$Perm.entity = $Entity.MoRef
$Perm.group = $false
$Perm.principal = $NewUser
$Perm.propagate = $true
# You can either specify roleID or use the line below if you know the role name.
# $Perm.roleId = ($AuthMgr.RoleList | where {$_.Name -eq "ReadOnly"}).RoleId
$Perm.roleId = "-2"
$AuthMgr.SetEntityPermissions($Entity.MoRef,$Perm)
 
Disconnect-VIServer -Server $ESXhost -Confirm:$false

## For the full list of Roles you have in your environment please use this script:

$report =@()
$authMgr = Get-View AuthorizationManager
foreach($role in $authMgr.RoleList){
$row = "" | Select RoleName, Label, RoleId
$row.RoleName = $role.Name
$row.Label = $role.Info.Label
$row.RoleId = $role.RoleId
$report += $row
}
$report 


Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • vROps: Management Pack Troubleshooting
  • Windows AD {Active Directory} (PowerShell) samples
  • Migrate VMs Between vCentres Using Powershell or PowerCLI
  • Set VM Tools to Update Automatically on VM Reboot using powershell
  • Windows Administrator Must Have Powershell Commands

Recent Comments

  • JB on Script: How to get VM with Tag Assignment and export results to csv using PowerCLI or Powershell
  • DL on How to change VCSA root password and bypass BAD PASSWORD: it is based on a dictionary word for vCenter VCSA root account warning
  • 360coolp on How to change VCSA root password and bypass BAD PASSWORD: it is based on a dictionary word for vCenter VCSA root account warning
  • Yogesh on ESXi 8.x, 7.x, 6.x Service sfcbd-watchdog Not Running / Fails to Start – VirtuallyThatGuy
  • VirtuallyThatGuy on ESXi 8.x, 7.x, 6.x Service sfcbd-watchdog Not Running / Fails to Start – VirtuallyThatGuy

Archives

  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017

Categories

  • Automation
  • PowerCLI
  • VMware
  • Windows
© 2026 VirtuallyThatGuy | Powered by Superbs Personal Blog theme