New-EntraUser

Creates a Microsoft Entra ID user.

Syntax

New-EntraUser
   -DisplayName <String>
   -AccountEnabled <Boolean>
   -PasswordProfile <PasswordProfile>
   [-City <String>]
   [-UserStateChangedOn <String>]
   [-CompanyName <String>]
   [-PreferredLanguage <String>]
   [-FacsimileTelephoneNumber <String>]
   [-GivenName <String>]
   [-Mobile <String>]
   [-UsageLocation <String>]
   [-PostalCode <String>]
   [-AgeGroup <String>]
   [-CreationType <String>]
   [-ExtensionProperty <System.Collections.Generic.Dictionary`2[System.String,System.String]>]
   [-ConsentProvidedForMinor <String>]
   [-MailNickName <String>]
   [-ImmutableId <String>]
   [-Country <String>]
   [-SignInNames <System.Collections.Generic.List`1[Microsoft.Open.AzureAD.Model.SignInName]>]
   [-Department <String>]
   [-PasswordPolicies <String>]
   [-JobTitle <String>]
   [-IsCompromised <Boolean>]
   [-UserState <String>]
   [-UserType <String>]
   [-OtherMails <System.Collections.Generic.List`1[System.String]>]
   [-PhysicalDeliveryOfficeName <String>]
   [-UserPrincipalName <String>]
   [-State <String>]
   [-StreetAddress <String>]
   [-TelephoneNumber <String>]
   [-Surname <String>]
   [-ShowInAddressList <Boolean>]
   [<CommonParameters>]

Description

The New-EntraUser cmdlet creates a user in Microsoft Entra ID. Specify the DisplayName,AccountEnabled, and PasswordProfile parameter to create a user.

Examples

Example 1: Create a user using MailNickName parameter

Connect-Entra -Scopes 'User.ReadWrite.All'
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = '<Password>'
$userParams = @{
    DisplayName       = 'Avery Iona'
    PasswordProfile   = $PasswordProfile
    UserPrincipalName = 'AveryI@contoso.com'
    AccountEnabled    = $true
    MailNickName      = 'averyi'
}

New-EntraUser @userParams

ObjectId                             DisplayName UserPrincipalName               UserType
--------                             ----------- -----------------               --------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb Avery Iona    AveryI@contoso.com             Member

This command creates a new user.

Example 2: Create a user using AgeGroup parameter

Connect-Entra -Scopes 'User.ReadWrite.All'
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = '<Password>'

$userParams = @{
    DisplayName       = 'Peyton Davis'
    PasswordProfile   = $PasswordProfile
    UserPrincipalName = 'PeytonD@contoso.com'
    AccountEnabled    = $true
    MailNickName      = 'PeytonD'
    AgeGroup          = 'adult'
}

New-EntraUser @userParams

ObjectId                             DisplayName UserPrincipalName               UserType
--------                             ----------- -----------------               --------
bbbbbbbb-1111-2222-3333-cccccccccccc Peyton Davis    PeytonD@contoso.com             Member

This command creates a new user.

Example 3: Create a user using City parameter

Connect-Entra -Scopes 'User.ReadWrite.All'
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = '<Password>'

$userParams = @{
    DisplayName       = 'Blake Martin'
    PasswordProfile   = $PasswordProfile
    UserPrincipalName = 'BlakeM@contoso.com'
    AccountEnabled    = $true
    MailNickName      = 'BlakeM'
    City              = 'New York'
}

New-EntraUser @userParams

ObjectId                             DisplayName UserPrincipalName               UserType
--------                             ----------- -----------------               --------
cccccccc-2222-3333-4444-dddddddddddd Blake Martin    BlakeM@contoso.com             Member

This command creates a new user.

Example 4: Create a user using Department parameter

Connect-Entra -Scopes 'User.ReadWrite.All'
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = '<Password>'
$userParams = @{
    DisplayName       = 'Parker Jones'
    PasswordProfile   = $PasswordProfile
    UserPrincipalName = 'ParkerJ@contoso.com'
    AccountEnabled    = $true
    MailNickName      = 'ParkerJ'
    Department        = 'IT'
}

New-EntraUser @userParams

ObjectId                             DisplayName UserPrincipalName               UserType
--------                             ----------- -----------------               --------
dddddddd-3333-4444-5555-eeeeeeeeeeee Parker Jones    ParkerJ@contoso.com             Member

This command creates a new user.

Example 5: Create a user using Mobile parameter

Connect-Entra -Scopes 'User.ReadWrite.All'
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = '<Password>'

$UserParams = @{
    DisplayName        = 'Sawyer Miller'
    PasswordProfile    = $PasswordProfile
    UserPrincipalName  = 'SawyerM@contoso.com'
    AccountEnabled     = $true
    MailNickName       = 'SawyerM'
    Mobile             = '+18989898989'
}

New-EntraUser @UserParams

ObjectId                             DisplayName UserPrincipalName               UserType
--------                             ----------- -----------------               --------
eeeeeeee-4444-5555-6666-ffffffffffff Sawyer Miller    SawyerM@contoso.com             Member

This command creates a new user.

Parameters

-AccountEnabled

Indicates whether the user's account is enabled.

Type:System.Boolean
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-AgeGroup

Specifies the user's age group.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-City

Specifies the user's city.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CompanyName

Specifies the user's company name.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConsentProvidedForMinor

Sets whether consent was obtained for minors.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Country

Specifies the user's country.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CreationType

Indicates whether the user account is a local account for a Microsoft Entra ID B2C tenant. Possible values are "LocalAccount" and null.

  • When user creating a local account, the property is required and you must set it to "LocalAccount".
  • When user creating a work or school account, don't specify the property or set it to null.
Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Department

Specifies the user's department.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayName

Specifies the user's display name.

Type:System.String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ExtensionProperty

Add data to custom user properties as the basic open extensions or the more versatile schema extensions.

Type:System.Collections.Generic.Dictionary`2[System.String,System.String]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FacsimileTelephoneNumber

Specifies the user's telephone number.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-GivenName

Specifies the user's given name.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ImmutableId

This property is used to associate an on-premises user account to their Microsoft Entra ID user object. This property must be specified when creating a new user account in the Graph if you're using a federated domain for the user's userPrincipalName (UPN) property.

Important: The $ and _ characters can't be used when specifying this property.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IsCompromised

Indicates whether this user is compromised.

Type:System.Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-JobTitle

Specifies the user's job title.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MailNickName

Specifies the user's mail nickname.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Mobile

Specifies the user's mobile phone number.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OtherMails

A list of other email addresses for the user; for example: "bob@contoso.com", "Robert@fabrikam.com".

Type:System.Collections.Generic.List`1[System.String]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PasswordPolicies

Specifies password policies for the user. This value is an enumeration with one possible value being "DisableStrongPassword", which allows weaker passwords than the default policy to be specified. "DisablePasswordExpiration" can also be specified. The two might be specified together; for example: "DisablePasswordExpiration, DisableStrongPassword".

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PasswordProfile

Specifies the user's password profile.

The parameter type for this parameter is "PasswordProfile".

In order to pass a parameter of this type, you first need to create a variable in PowerShell with that type:

$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile

Then you can proceed to set the value of the password in this variable:

$PasswordProfile.Password = "<Password>"

And finally you can pass this variable to the cmdlet:

New-EntraUser -PasswordProfile $PasswordProfile ...

Other attributes that can be set in the PasswordProfile are

  • $PasswordProfile.EnforceChangePasswordPolicy - a boolean indicating that the change password policy is enababled or disabled for this user $PasswordProfile.

  • ForceChangePasswordNextLogin - a boolean indicating that the user must change the password at the next sign in.

Type:PasswordProfile
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-PhysicalDeliveryOfficeName

Specifies the user's physical delivery office name.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PostalCode

Specifies the user's postal code.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PreferredLanguage

Specifies the user's preferred language.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowInAddressList

If True, show this user in the address list.

Type:System.Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SignInNames

Specifies the collection of sign-in names for a local account in a Microsoft Entra ID B2C tenant.

Each sign-in name must be unique across the company/tenant.

The property must be specified when you create a local account user; don't specify it when you create a work or school account.

Type:System.Collections.Generic.List`1[Microsoft.Open.AzureAD.Model.SignInName]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-State

Specifies the user's state.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StreetAddress

Specifies the user's street address.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Surname

Specifies the user's surname.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TelephoneNumber

Specifies a telephone number.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UsageLocation

A two letter country code (ISO standard 3166).

Required for users that are assigned licenses due to legal requirement to check for availability of services in countries.

Examples include: "US", "JP", and "GB".

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserPrincipalName

The user principal name (UPN) of the user.

The UPN is an Internet-style sign-in name for the user based on the Internet standard RFC 822.

By convention, this UPN should map to the user's email name.

The general format is "alias@domain".

For work or school accounts, the domain must be present in the tenant's collection of verified domains.

This property is required when a work or school account is created; it's optional for local accounts.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserState

For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserStateChangedOn

Shows the timestamp for the latest change to the userState property.

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserType

A string value that can be used to classify user types in your directory, such as "Member" and "Guest".

Type:System.String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False