Cómo agregar, eliminar y cambiar usuarios y grupos locales con PowerShell
Para ayudar a los administradores a administrar usuarios y grupos locales con PowerShell más fácilmente, Microsoft proporciona una colección de cmdlets llamada Microsoft.PowerShell.LocalAccounts. Anteriormente, tenía que descargarlo e importarlo explícitamente a PowerShell y también instalar Windows Management Framework 5.1; en los sistemas operativos Windows Server 2016 y Windows 10, la colección de cmdlets se incluye como módulo estándar.
Hay 15 cmdlets en el módulo LocalAccounts. Puede ver la lista completa ejecutando el siguiente comando:
Get-Command -Module Microsoft.PowerShell.LocalAccounts- Add-LocalGroupMember: agrega un usuario al grupo local
- Disable-LocalUser: deshabilita una cuenta de usuario local
- Enable-LocalUser: habilita una cuenta de usuario local
- Get-LocalGroup: ver las preferencias del grupo local
- Get-LocalGroupMember: ve la lista de todos los miembros del grupo local
- Get-LocalUser: ver las preferencias de una cuenta de usuario local
- New-LocalGroup: crea un nuevo grupo local
- New-LocalUser: crea 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: cambia el nombre de un grupo local
- Rename-LocalUser: cambia el nombre de una cuenta de usuario local
- Set-LocalGroup: cambia la configuración de un grupo local
- Set-LocalUser: cambia la configuración de la cuenta de un usuario local
Administrar cuentas de usuarios locales con PowerShell
Veamos cómo puede usar estos comandos para realizar tareas comunes relacionadas con la administración de usuarios locales en una computadora con Windows 10.
Listado de usuarios y sus propiedades con PowerShell
Primero, obtengamos una lista de todas las cuentas de usuarios 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 "Falso" en la columna "Habilitado").
Si desea generar todas las propiedades y sus valores para una cuenta de usuario local, debe utilizar el cmdlet Get-LocalUser con los siguientes parámetros:
Get-LocalUser -Name ‘guest’ | Select-Object *Para obtener el valor de un atributo de cuenta de usuario local en particular, 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 “administrador”:
Get-LocalUser -Name ‘administrator’ | Select-Object PasswordLastSetCreando 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 sin formato; conviértalo siempre en una cadena segura utilizando el parámetro ?AsSecureString o ?ConvertTo-SecureString. Este es 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 Windows 10, los usuarios pueden realizar autorizaciones en sus cuentas de Microsoft, por lo que podemos crear una nueva cuenta de usuario local que se vincule a 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, use el siguiente comando:
New-LocalUser -Name "AzureADNetwrix@enterprise.com" -Description "Azure AD Account"Cambiar la contraseña de un usuario local o las propiedades de la contraseña 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 –VerbosePara configurar la Contraseña nunca caduca para un usuario local con PowerShell, necesitamos ejecutar el siguiente script:
Set-LocalUser -Name Netwrix –PasswordNeverExpires $FalseEliminar una cuenta de usuario local con PowerShell
Para eliminar una cuenta de usuario local, debe utilizar el cmdlet Remove-LocalUser:
Remove-LocalUser -Name Netwrix -VerboseAdministrar grupos locales con PowerShell
Ahora dirijamos nuestra atención de los usuarios locales a los grupos locales.
Revisar grupos locales con PowerShell
Primero, obtengamos una lista de todos los grupos en nuestro servidor Windows:
Get-LocalGroupAgregar un grupo local con PowerShell
Ahora creemos un nuevo grupo:
New-LocalGroup -Name 'Netwrix Users' -Description 'Netwrix Users Group'Agregar 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 local, pero no queremos agregarlos uno por uno. Agreguemos un grupo a los administradores locales, es decir, el grupo "Usuarios de Netwrix":
Add-LocalGroupMember -Group 'Administrators' -Member ('Netwrix',’Netwrix Users') –VerboseSi 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 usando el formato “DomainNameUser” (para un usuario) o “DomainNameDomain Group” (para un grupo).
Ver la membresía de un grupo en particular con PowerShell
Ahora enumeremos todos los miembros de un grupo local en particular:
Get-LocalGroupMember -Group 'Netwrix Users'
Como puede ver, el comando muestra todas las cuentas y grupos locales que son miembros del grupo "Usuarios de Netwrix". Aunque aquí solo se enumeran cuentas y grupos locales, este comando también mostrará los usuarios y grupos del dominio, así como todas las cuentas de Microsoft y Azure AD.
Ver todos los grupos a los que pertenece un usuario mediante PowerShell
Para enumerar todos los grupos a los que pertenece un usuario en particular, ejecutaríamos el siguiente script:
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member 'Guest' –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}Eliminar un grupo local con PowerShell
Para eliminar una cuenta de usuario local de un grupo, debe utilizar el cmdlet Remove-LocalGroupMember:
Remove-LocalGroupMember -Group 'Netwrix Users' –Member 'guest'Administrar usuarios y grupos locales de forma remota con PowerShell
Si desea administrar grupos y cuentas de usuarios locales de forma remota, debe conectarse a las estaciones de trabajo remotas a través de WinRM usando los cmdlets Invoke-Command y Enter-PSSession. Por ejemplo, si queremos generar la membresía del grupo de administración local de forma remota en varias computadoras, debemos 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 obtener información sobre cómo configurar la auditoría nativa, consulte la Guía de referencia rápida de auditoría de Windows Server.






