Cómo agregar, eliminar y cambiar usuarios y grupos locales con PowerShell
Sep 18, 2018
La gestión de usuarios y grupos locales con PowerShell se simplifica a través del módulo Microsoft.PowerShell.LocalAccounts, que proporciona cmdlets para crear, modificar, deshabilitar o eliminar cuentas y grupos. Los administradores pueden automatizar tareas como agregar usuarios a grupos, restablecer contraseñas o revisar membresías, al tiempo que gestionan cuentas vinculadas a Microsoft y Azure AD-linked accounts. La gestión remota a través de sesiones de PowerShell simplifica aún más la administración, aunque auditar los cambios sigue siendo esencial para la seguridad y el cumplimiento.
Para ayudar a los administradores a gestionar usuarios y grupos locales con PowerShell de manera más sencilla, Microsoft proporciona una colección de cmdlets llamada Microsoft.PowerShell.LocalAccounts. Anteriormente, tenías que descargarla e importarla explícitamente en PowerShell, además de instalar Windows Management Framework 5.1; en los sistemas operativos Windows Server 2016 y Windows 10, la colección de cmdlets se incluye como un módulo estándar.
Hay 15 cmdlets en el módulo de LocalAccounts. Puede ver la lista completa ejecutando el siguiente comando:
Get-Command -Module Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember — Agregar un usuario al grupo local
- Disable-LocalUser —Deshabilitar una cuenta de usuario local
- Enable-LocalUser — Activar una cuenta de usuario local
- Get-LocalGroup — Ver preferencias de grupo local
- Get-LocalGroupMember — Vea la lista de todos los miembros del grupo local
- Get-LocalUser — Consulte las preferencias de una cuenta de usuario local
- New-LocalGroup — Crear un nuevo grupo local
- New-LocalUser — Crear una nueva cuenta de usuario local
- Remove-LocalGroup — Eliminar un grupo local
- Remove-LocalGroupMember — Eliminar un miembro de un grupo local
- Remove-LocalUser — Eliminar una cuenta de usuario local
- Rename-LocalGroup — Renombrar un grupo local
- Rename-LocalUser — Renombrar una cuenta de usuario local
- Set-LocalGroup — Cambie la configuración de un grupo local
- Set-LocalUser — Cambie la configuración de la cuenta de un usuario local
Gestión de cuentas de usuario locales con PowerShell
Veamos cómo puedes utilizar estos comandos para realizar tareas comunes relacionadas con la gestión de usuarios locales en un ordenador con Windows 10.
Listando usuarios y sus propiedades con PowerShell
Primero, obtengamos una lista de todas las cuentas de usuario locales en la máquina. Usaremos el cmdlet Get-LocalUser:
Get-LocalUser
Como puede ver, tenemos dos cuentas de usuario locales, y una de ellas está deshabilitada (la que tiene “False” en la columna “Enabled”).
Si desea mostrar todas las propiedades y sus valores para una cuenta de usuario local, necesita usar el cmdlet Get-LocalUser con los siguientes parámetros:
Get-LocalUser -Name ‘guest’ | Select-Object *
Para obtener el valor de un atributo específico de una cuenta de usuario local, escriba su nombre después del parámetro Select-Object. En este ejemplo, queremos saber el valor del atributo PasswordLastSet para la cuenta con el nombre de usuario “administrator”:
Get-LocalUser -Name ‘administrator’ | Select-Object PasswordLastSet
Creando un usuario local con PowerShell
Creemos un nuevo usuario con la ayuda del cmdlet New-LocalUser. Este cmdlet puede crear los siguientes tipos de cuentas de usuario:
- Cuentas de usuario locales de Windows
- Cuentas de Microsoft
- Cuentas de Azure Active Directory
Al crear una cuenta de usuario local, nunca escriba la contraseña como texto plano; siempre conviértala en una cadena segura utilizando el parámetro ?AsSecureString o ?ConvertTo-SecureString. Aquí está el comando para crear una nueva cuenta de usuario local:
$UserPassword = Read-Host –AsSecureString
New-LocalUser "Netwrix" -Password $UserPassword -FullName "Netwrix" -Description "CompleteVisibility"
En un entorno de Windows 10, los usuarios pueden autorizarse bajo sus cuentas de Microsoft, así que podemos crear una nueva cuenta de usuario local que se vincule con las credenciales de una cuenta de Microsoft. Utilice el siguiente script para hacer esto (tenga en cuenta que no necesita escribir la contraseña porque está almacenada en la nube de Microsoft):
New-LocalUser -Name "MicrosoftAccountSomeAccount@outlook.com" -Description "Microsoft Account"
Para crear una cuenta local que se vincule a su Azure AD, utilice el siguiente comando:
New-LocalUser -Name "AzureADNetwrix@enterprise.com" -Description "Azure AD Account"
Cambiar la contraseña o las propiedades de la contraseña de un usuario local con PowerShell
Para cambiar la contraseña de una cuenta de usuario local, necesitamos usar el cmdlet Set-LocalUser. Cambiemos la contraseña del administrador local:
$UserPassword = Read-Host –AsSecureString
Set-LocalUser -Name Administrator -Password $UserPassword –Verbose
Para establecer la opción Password never expires a un usuario local con PowerShell, necesitamos ejecutar el siguiente script:
Set-LocalUser -Name Netwrix –PasswordNeverExpires $False
Eliminando una cuenta de usuario local con PowerShell
Para eliminar una cuenta de usuario local, necesita utilizar el cmdlet Remove-LocalUser:
Remove-LocalUser -Name Netwrix -Verbose
Gestión de Grupos Locales con PowerShell
Ahora dirijamos nuestra atención de los usuarios locales a los grupos locales.
Revisando grupos locales con PowerShell
Primero, obtengamos una lista de todos los grupos en nuestro Windows Server:
Get-LocalGroup
Añadiendo un grupo local con PowerShell
Ahora vamos a crear un nuevo grupo:
New-LocalGroup -Name 'Netwrix Users' -Description 'Netwrix Users Group'
Añadir usuarios a un grupo local con PowerShell
Para agregar un usuario (o un grupo) a un grupo local, necesitamos usar el cmdlet Add-LocalGroupMember. Por ejemplo, supongamos que queremos agregar usuarios al grupo de Administradores locales, pero no queremos agregarlos uno por uno. Vamos a agregar un grupo a los Administradores locales, a saber, el grupo “Netwrix Users”:
Add-LocalGroupMember -Group 'Administrators' -Member ('Netwrix',’Netwrix Users') –Verbose
Si su computadora o servidor es parte del dominio, también puede agregar cuentas de dominio y grupos a grupos locales para otorgar a esos usuarios derechos locales especiales en el servidor. Agréguelos utilizando el formato “DomainNameUser” (para un usuario) o “DomainNameDomain Group” (para un grupo).
Visualización de la membresía de un grupo en particular con PowerShell
Ahora vamos a enumerar todos los miembros de un grupo local en particular:
Get-LocalGroupMember -Group 'Netwrix Users'
Como puede ver, el comando muestra todas las cuentas locales y grupos que son miembros del grupo “Netwrix Users”. Aunque aquí solo se enumeran cuentas y grupos locales, este comando también mostrará cualquier usuario y grupo de dominio, así como todas las cuentas de Microsoft y Azure AD.
Visualización de todos los grupos de los que un usuario es miembro utilizando PowerShell
Para listar todos los grupos de los que un usuario en particular es miembro, ejecutaríamos el siguiente script:
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member 'Guest' –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}
Eliminando un grupo local con PowerShell
Para eliminar una cuenta de usuario local de un grupo, necesita usar el cmdlet Remove-LocalGroupMember:
Remove-LocalGroupMember -Group 'Netwrix Users' –Member 'guest'
Gestión remota de usuarios y grupos locales con PowerShell
Si desea administrar cuentas de usuario locales y grupos de forma remota, necesita conectarse a las estaciones de trabajo remotas a través de WinRM utilizando los cmdlets Invoke-Command y Enter-PSSession. Por ejemplo, si queremos mostrar la membresía del grupo Admin local de forma remota en múltiples computadoras, necesitamos ejecutar el siguiente script:
$search = new-pssession -computer pcname1,pcname2,pcname3
invoke-command -scriptblock {Get-LocalGroupMember -Group 'Administrators'} -session $search -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"
Como puede ver, es bastante fácil administrar grupos y usuarios locales a través de PowerShell, pero para garantizar la seguridad, el cumplimiento y la continuidad del negocio, es esencial auditar todos estos cambios. Para aprender sobre la configuración de la auditoría nativa, por favor consulte la Windows Server Auditing Quick Reference Guide.
Compartir en
Aprende más
Acerca del autor
Jeff Melnick
Director de Ingeniería de Sistemas
Jeff es un ex Director de Ingeniería de Soluciones Globales en Netwrix. Es un bloguero, orador y presentador de Netwrix desde hace mucho tiempo. En el blog de Netwrix, Jeff comparte lifehacks, consejos y trucos que pueden mejorar drásticamente tu experiencia en la administración de sistemas.
Aprende más sobre este tema
Crear usuarios de AD en masa y enviar sus credenciales por correo electrónico usando PowerShell
Cómo crear, cambiar y probar contraseñas usando PowerShell
Cómo agregar y eliminar grupos de AD y objetos en grupos con PowerShell
Confianzas en Active Directory
Ataques de ransomware a Active Directory