Cómo crear, cambiar y eliminar usuarios o grupos locales con PowerShell
Puede usar el módulo integrado de PowerShell, Microsoft.PowerShell.LocalAccounts, para administrar usuarios y grupos locales en Windows. Este módulo le permite crear o eliminar usuarios locales y grupos de seguridad, y agregar o eliminar usuarios de grupos. El módulo está disponible en Windows Server 2016 y Windows 10 y versiones más recientes. Este módulo se instala con Windows Management Framework 5.1 en versiones anteriores de Windows cuando actualiza su versión de PowerShell.
Hay 15 cmdlets en el módulo LocalAccounts. Puede mostrar la lista completa de cmdlets de módulo de la siguiente manera:
Get-Command -Module Microsoft.PowerShell.LocalAccountsAdd-LocalGroupMember- añadir un usuario a un grupo de seguridad local;
Disable-LocalUser- desactivar una cuenta de usuario local;
Enable-LocalUser- habilitar una cuenta de usuario local;
Get-LocalGroup- obtener información sobre un grupo local;
Get-LocalGroupMember- ver la lista de usuarios en un grupo local;
Get-LocalUser- mostrar información sobre un usuario local;
New-LocalGroup- crear un nuevo grupo local;
New-LocalUser- crear un usuario local;
Remove-LocalGroup- suprimir un grupo local;
Remove-LocalGroupMember- eliminar un miembro de un grupo local;
Remove-LocalUser- suprimir un usuario local;
Rename-LocalGroup- renombrar un grupo local;
Rename-LocalUser- cambiar el nombre de un usuario;
Set-LocalGroup- cambiar la configuración del grupo;
Set-LocalUser- cambiar la configuración del usuario.
Veamos algunas tareas típicas para administrar usuarios y grupos locales en una computadora con Windows usando los cmdlets de PowerShell del módulo LocalAccounts.
Anteriormente, el complemento gráfico de MMC Administración de usuarios y grupos locales (
lusrmgr.msc), el
net usery
net localgroupLos comandos se usaban comúnmente para administrar usuarios y grupos locales en Windows.
Crear un nuevo usuario local con PowerShell
Use el cmdlet New-LocalUser para crear rápidamente una nueva cuenta de usuario local en Windows:
New-LocalUser -Name "TestUser1" -FullName "Test User" -Description "User for tests"Especifique una contraseña para el nuevo usuario:
La longitud y la complejidad de la contraseña del usuario deben estar de acuerdo con las políticas de contraseñas locales y de dominio (si la computadora está unida a un dominio de Active Directory).
Si desea usar el cmdlet New-LocalUser para crear automáticamente nuevos usuarios locales a partir de scripts de PowerShell, puede predefinir la contraseña del usuario predeterminado en el código del script. La contraseña de texto sin formato debe convertirse en una cadena segura:
$pass = ConvertTo-SecureString "WOS_hubP@ss2023!" -AsPlainText -Force
New-LocalUser -Name TestUser2 -Password $passwordPara agregar un usuario al grupo de administradores locales, ejecute el comando:
Add-LocalGroupMember -Group Administrators -Member TestUser2Puede mostrar la lista de usuarios locales en Windows en la pantalla de inicio de sesión.
También puede utilizar las siguientes opciones al crear una cuenta de usuario local de Windows:
-AccountExpires- establecer la fecha de caducidad de la cuenta, después de lo cual la cuenta se desactivará automáticamente (de forma predeterminada, New-LocalUser crea una cuenta que nunca caduca);
-AccountNeverExpires-Disabled- deshabilitar una cuenta después de la creación;
-PasswordNeverExpires- configurar la contraseña de un usuario para que nunca caduque;
-UserMayNotChangePassword- el usuario no puede cambiar la contraseña de la cuenta.
Use el cmdlet New-ADUser para crear un nuevo usuario en un dominio de Active Directory.
Administrar cuentas de usuario locales en Windows a través de PowerShell
Para enumerar todos los usuarios locales de Windows en la computadora actual, ejecute:
Get-LocalUserComo puede ver, hay 6 cuentas locales en la computadora, 4 de las cuales están deshabilitadas (Habilitado=Falso), incluido el Administrador de Windows incorporado.
Para mostrar todas las propiedades de una cuenta local (similar al cmdlet Get-ADUser que se usa para mostrar información sobre los usuarios del dominio AD), ejecute este comando:
Get-LocalUser -Name root | Select-Object *AccountExpires :
Description :
Enabled : True
FullName :
PasswordChangeableDate : 3/12/2019 10:14:29 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 3/11/2019 10:14:29 PM
LastLogon : 3/11/2019 4:18:17 PM
Name : root
SID : S-1-5-21-2605456602-2293283241-3832290805-1001
PrincipalSource : Local
ObjectClass : UserMire el atributo PrincipalSource. Contiene el tipo de cuenta de usuario. Podría ser:
Usuario local de Windows (PrincipalSource: Local)
Cuentas de Microsoft (Fuente Principal: Cuenta de Microsoft)
Usuarios de Azure AD (Origen principal: AzureAD)
Para obtener el valor de un atributo de usuario específico, como la última fecha de cambio de contraseña:
Get-LocalUser -Name root | Select-Object PasswordLastSetPara cambiar (restablecer) la contraseña del usuario use el comando (suponemos que ya ha convertido la nueva contraseña en un SecureString):
Set-LocalUser -Name john -Password $UserPassword -VerbosePuede usar la política de solución de contraseña de administrador local de Windows (LAPS) para administrar y cambiar automáticamente las contraseñas de administrador local en todas las computadoras en un dominio.
Para configurar el indicador "La contraseña nunca caduca" para el usuario, use el comando:
Set-LocalUser -Name john -PasswordNeverExpires $FalseComo puede ver, no necesita convertir el valor de UserAccountControl como cuando administra las propiedades de la cuenta de usuario en AD.
Deshabilitar la cuenta local:
Disable-LocalUser -Name johnHabilite el usuario local:
Enable-LocalUser -Name johnPara eliminar un usuario local:
Remove-LocalUser -Name john -Verbose¿Cómo crear y administrar grupos locales usando PowerShell?
Puede listar los grupos locales en su dispositivo Windows usando el comando:
Get-LocalGroupVamos a crear un nuevo grupo local:
New-LocalGroup -Name RemoteSupport -Description 'Remote Support Group'Ahora agreguemos un par de cuentas locales y un grupo de administradores locales al nuevo grupo:
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('john','root','Administrators') -Verbose
Consejo. La forma de crear, quitar o agregar usuarios a los grupos de dominio de AD se describe en la publicación Administración de grupos de Active Directory mediante PowerShell.
También puede agregar un usuario a grupos usando la siguiente canalización (en este ejemplo, agregaremos el usuario a un grupo local que les permite acceder al escritorio de la computadora de forma remota a través de RDP):
Get-Localuser -Name TestUser2 | Add-LocalGroupMember -Group 'Remote Desktop Users'Mostrar la lista de usuarios en el grupo local:
Get-LocalGroupMember -Group 'RemoteSupport'Si su computadora está unida al dominio AD, puede agregar cuentas y grupos de dominio a su grupo local. Utilice la siguiente sintaxis: DomainName\jonhl o DomainName\'domain admins'.
Puede agregar no solo cuentas locales (PrincipalSource - Local), sino también cuentas de dominio (Domain), cuentas de Microsoft (MicrosoftAccount) y cuentas de Azure (AzureAD) a los grupos locales.
Use la siguiente sintaxis para agregar un usuario de Microsoft o AzureAD a un grupo local:
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('MicrosoftAccount\a-d@outlook.com','AzureAD\admin@a-d.site') -VerbosePara enumerar los grupos locales de los que un usuario específico es miembro, ejecute el siguiente script (el script verifica la membresía de cada grupo local):
$user='john'
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member $user -ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}Para eliminar un usuario de un grupo, ejecute el comando:
Remove-LocalGroupMember -Group 'RemoteSupport' -Member johnPara administrar usuarios locales en una computadora remota, puede conectarse a la computadora a través de WinRM usando los cmdlets Invoke-Command o Enter-PSSession.
Por ejemplo, es posible que desee obtener una lista de cuentas en el grupo local en equipos remotos:
$winrm_ssn = new-pssession -computer Lon-Srv01,Lon-Srv02,Lon-Srv03
invoke-command -scriptblock {Get-LocalGroupMember -Group 'RemoteSupport'} -session $winrm_ssn -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"






