Cómo crear un nuevo usuario local con PowerShell

Cuando necesite crear un usuario local en Windows 10 u 11, puede usar el panel de control de Cuentas de usuario.

Pero también podemos usar PowerShell para crear un nuevo usuario local. De esta forma podemos automatizar fácilmente la creación de una cuenta local en dispositivos Windows.

Para crear un usuario local con PowerShell, deberá tener acceso de administrador a la computadora y ejecutar PowerShell como administrador (elevado). De lo contrario, no podrá crear cuentas.

En este artículo, explicaré cómo puede crear un nuevo usuario local. Al final del artículo, tengo dos scripts de PowerShell que puede usar para crear un usuario local.

Crear usuario local con PowerShell

Para crear un nuevo usuario local vamos a utilizar el New-LocalUser cmdlet en PowerShell.

Tenemos la opción de establecer una contraseña para la cuenta o crear una cuenta sin contraseña.

También hay un par de otros parámetros útiles que podemos usar:

Parámetro Descripción
-Nombre Nombre de inicio de sesión de la cuenta: máximo 20 caracteres
-Clave Contraseña: se suministra con una cadena segura
-Descripción Descripción de la cuenta
-La cuenta caduca Objeto DateTime cuando caduca la cuenta
-La cuenta nunca caduca La cuenta no caduca
-Desactivado Crea la cuenta como inhabilitada
-Nombre completo El nombre para mostrar de la cuenta.
-La contraseña nunca expira La contraseña no caduca
-El usuario no puede cambiar la contraseña El usuario no puede cambiar la contraseña
Parámetros del cmdlet New-LocalUser

Entonces, para crear rápidamente una cuenta de usuario local con PowerShell, podemos hacer lo siguiente:

$password = Read-Host -AsSecureString
New-LocalUser -Name "LazyUser" -Password $password -FullName "Lazy User" -Description "Test user"
nuevo usuario local
PowerShell Nuevo usuario local

Este pequeño script de PowerShell requerirá que primero ingrese la contraseña, luego de lo cual se crea el usuario con la contraseña dada.

Proporcionar la contraseña

Como puede ver, esto no le permitirá ejecutar el script de forma autónoma, ya que deberá ingresar una contraseña.

Este también es el desafío de crear usuarios locales, la mayoría de las veces desea proporcionar la contraseña de forma segura.

Si ejecuta el script de forma remota o bajo su propia supervisión, puede escribir la contraseña dentro de un script de PowerShell y convertirlo en una cadena segura. ¡Pero tenga en cuenta que cualquiera que abra el script puede leer la contraseña!

# Username and Password
$username = "LazyUser"
$password = ConvertTo-SecureString "LazyAdminPwd123!" -AsPlainText -Force  # Super strong plane text password here (yes this isn't secure at all)

# Creating the user
New-LocalUser -Name "$username" -Password $password -FullName "$username" -Description "Lazy Test user"

Puede guardar esto en un archivo ps1 y simplemente ejecutarlo en una sesión de PowerShell elevada.

Configuración de la fecha de caducidad

De forma predeterminada, la nueva cuenta de usuario no caducará, pero con el cmdlet New-LocalUser, podemos establecer una fecha de caducidad para la cuenta. Para la fecha necesitaremos usar un objeto PowerShell DateTime:

$date = Get-Date -Year 2022 -Month 06 -Day 10

# Creating the user
New-LocalUser -Name "$username" -Password $password -AccountExpires $date -FullName "$username" -Description "Lazy Test user"

Hacer que el usuario sea miembro de un grupo con Add-LocalGroupMember

Una vez que haya creado el usuario, deberá convertirlo en miembro de un grupo local. Sin él, el usuario no podrá iniciar sesión.

Para convertir al usuario en miembro de un grupo, vamos a utilizar el cmdlet Add-LocalGroupMember.

Add-LocalGroupMember solo requiere el nombre del grupo y el miembro que desea agregar:

Add-LocalGroupMember -Groups Users -Member LazyUser

El cmdlet no proporciona ningún resultado si se realizó correctamente, solo un error cuando no se encuentra el nombre del grupo o el miembro.

También puede agregar varios usuarios a un grupo local con PowerShell. Simplemente separe con comas a los miembros en el cmdlet:

Add-LocalGroupMember -Groups Users -Member "LazyUser", "LazyUser2"

Script completo para nuevo usuario local en PowerShell

Creé dos scripts que lo ayudarán a crear una cuenta de usuario local con PowerShell.

En ambos scripts, he agregado la opción de escribir un archivo de registro.

Este archivo de registro se almacena en un recurso compartido de red, lo que le permite verificar fácilmente si la creación se realizó correctamente en la computadora.

La primera secuencia de comandos tiene una contraseña establecida en la secuencia de comandos, por lo que simplemente puede ejecutar la secuencia de comandos en una computadora.

¡Tenga en cuenta que deberá tener acceso de administrador para crear una cuenta de usuario local!

<#
.SYNOPSIS
  Create local admin acc

.DESCRIPTION
  Creates a local administrator account on de computer. Requires RunAs permissions to run

.OUTPUTS
  none

.NOTES
  Version:        1.0
  Author:         R. Mens - LazyAdmin.nl
  Creation Date:  25 march 2022
  Purpose/Change: Initial script development
#>

# Configuration
$username = "adminTest"   # Administrator is built-in name
$password = ConvertTo-SecureString "LazyAdminPwd123!" -AsPlainText -Force  # Super strong plane text password here (yes this isn't secure at all)
$logFile = "\\server\folder\log.txt"

Function Write-Log {
  param(
      [Parameter(Mandatory = $true)][string] $message,
      [Parameter(Mandatory = $false)]
      [ValidateSet("INFO","WARN","ERROR")]
      [string] $level = "INFO"
  )
  # Create timestamp
  $timestamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")

  # Append content to log file
  Add-Content -Path $logFile -Value "$timestamp [$level] - $message"
}

Function Create-LocalAdmin {
    process {
      try {
        New-LocalUser "$username" -Password $password -FullName "$username" -Description "local admin" -ErrorAction stop
        Write-Log -message "$username local user crated"

        # Add new user to administrator group
        Add-LocalGroupMember -Group "Administrators" -Member "$username" -ErrorAction stop
        Write-Log -message "$username added to the local administrator group"
      }catch{
        Write-log -message "Creating local account failed" -level "ERROR"
      }
    }    
}

Write-Log -message "#########"
Write-Log -message "$env:COMPUTERNAME - Create local admin account"

Create-LocalAdmin

Write-Log -message "#########"

El script hará que el usuario sea miembro del grupo Administradores en este caso. Por supuesto, puede cambiar esto a cualquier otro grupo.

Asegúrese de establecer el nombre de usuario, la contraseña y la ruta del archivo de registro en esta primera parte del script.

También puedes descargar el script completo .

Script de cuenta de usuario local

El segundo script crea una cuenta de usuario local que es miembro de los grupos de usuarios. La diferencia con el primer script es que este le pedirá la contraseña.

<#
.SYNOPSIS
  Create local user acc

.DESCRIPTION
  Creates a local user account on de computer. Requires RunAs permissions to run

.OUTPUTS
  none

.NOTES
  Version:        1.0
  Author:         R. Mens - LazyAdmin.nl
  Creation Date:  25 march 2022
  Purpose/Change: Initial script development
#>

# Configuration
$username = "LazyTestUser"   # UserName
$fullName = "Lazy Test User" # Full name
$logFile = "\\server\folder\log.txt"

Function Write-Log {
  param(
      [Parameter(Mandatory = $true)][string] $message,
      [Parameter(Mandatory = $false)]
      [ValidateSet("INFO","WARN","ERROR")]
      [string] $level = "INFO"
  )
  # Create timestamp
  $timestamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")

  # Append content to log file
  Add-Content -Path $logFile -Value "$timestamp [$level] - $message"
}

Function Create-LocalUser {
    process {
      try {
        New-LocalUser "$username" -Password $password -FullName "$fullname" -Description "local user" -ErrorAction stop
        Write-Log -message "$username local user created"

        # Add new user to administrator group
        Add-LocalGroupMember -Group "Users" -Member "$username" -ErrorAction stop
        Write-Log -message "$username added to the local users group"
      }catch{
        Write-log -message "Creating local account failed" -level "ERROR"
      }
    }    
}

# Enter the password
Write-Host "Enter the password for the local user account" -ForegroundColor Cyan
$password = Read-Host -AsSecureString

Write-Log -message "#########"
Write-Log -message "$env:COMPUTERNAME - Create local user account"

Create-LocalUser

Write-Log -message "#########"

De nuevo, puedes descargar el script completo. .

Terminando

New-LocalUser también debe ser capaz de crear una cuenta local que esté conectada a una cuenta de Microsoft.

Pero el nombre de usuario todavía está limitado a 20 caracteres y no acepta el símbolo @. Entonces, por ahora estamos limitados solo a cuentas locales.

Espero que este artículo le haya ayudado a crear una cuenta de usuario local con PowerShell.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Cómo verificar su versión de PowerShell

Cómo verificar su versión de PowerShell

¿Está usando la versión 5.1 o ya cambió a la versión 7 de PowerShell? La versión de PowerShell que haya ...
Leer Más
PowerShell HashTable - Todo lo que necesitas saber

PowerShell HashTable – Todo lo que necesitas saber

Las tablas hash en PowerShell se pueden usar para almacenar información de manera estructurada. Esto se hace mediante el uso ...
Leer Más
Cómo crear un nuevo usuario local con PowerShell

Cómo crear un nuevo usuario local con PowerShell

Cuando necesite crear un usuario local en Windows 10 u 11, puede usar el panel de control de Cuentas de ...
Leer Más
Cómo usar Export-CSV en PowerShell

Cómo usar Export-CSV en PowerShell

Con PowerShell, puede extraer todo tipo de información de servicios como Active Directory o Microsoft 365. Pero a veces necesita ...
Leer Más
PowerShell Sleep - Cómo pausar su secuencia de comandos

PowerShell Sleep – Cómo pausar su secuencia de comandos

A veces, deberá pausar su secuencia de comandos de PowerShell durante un par de segundos. Por ejemplo, cuando está utilizando ...
Leer Más
Guía y scripts de desinstalación, reinstalación y limpieza de Microsoft Teams

Guía y scripts de desinstalación, reinstalación y limpieza de Microsoft Teams

Microsoft Teams no es como un programa promedio cuando se trata de instalarlo y desinstalarlo. El problema con Microsoft Teams ...
Leer Más

Deja un comentario