Búsqueda de sitios web

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 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 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 –Verbose

Para configurar la Contraseña nunca caduca para un usuario local con PowerShell, necesitamos ejecutar el siguiente script:

Set-LocalUser -Name Netwrix –PasswordNeverExpires $False

Eliminar una cuenta de usuario local con PowerShell

Para eliminar una cuenta de usuario local, debe utilizar el cmdlet Remove-LocalUser:

Remove-LocalUser -Name Netwrix -Verbose

Administrar 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-LocalGroup

Agregar 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') –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 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.

Artículos relacionados