Cómo agregar un usuario a un grupo en PowerShell con Add-ADGroupMember

Cuando necesite agregar varios usuarios a un grupo de Active Directory, usar PowerShell es realmente su mejor opción.

En lugar de buscar todos los usuarios manualmente, puede agregar usuarios rápidamente al grupo con PowerShell.

Agregar o eliminar usuarios de grupos de AD es una de las tareas diarias de un administrador de sistemas.

Cuando se trata de un solo usuario, puede usar perfectamente la consola de administración de Active Directory.

Pero cuando necesita actualizar usuarios de forma masiva, entonces PowerShell es el camino a seguir.

En este artículo, explicaré cómo puede agregar uno o varios usuarios a un grupo con PowerShell.

Además, veremos cómo usar un archivo CSV con usuarios para agregarlos a un grupo. Y al final, encontrará dos scripts de PowerShell que le permiten importar fácilmente archivos CSV.

PowerShell: agregue un usuario al grupo con Add-ADGroupMember

Para agregar usuarios a un grupo en PowerShell vamos a usar el Add-ADGroupMember cmdlet.

Asegúrese de haber instalado el módulo de Active Directory de PowerShell antes de comenzar.

El cmdlet Add-ADGroupMember se puede usar para agregar usuarios, cuentas de servicio, computadoras o incluso otros grupos a un grupo AD.

El cmdlet solo requiere la identidad del grupo al que desea agregar los miembros y una lista de miembros para agregar.

Para especificar el grupo y los miembros podemos usar los siguientes valores:

  • nombre distinguido
  • objetoGUID (GUID)
  • objectSid (identificador de seguridad)
  • SAMAccountName (nombre de cuenta del administrador de cuentas de seguridad)

Entonces, para agregar un solo usuario al grupo «SG_PowerBi», podemos usar el nombre del grupo, que es el SAMAccountName del grupo. Y también para el usuario, vamos a usar el SAMAccountName:

# Adding user Alan Rhodes to the group SG_PowerBi
Add-ADGroupMember -Identity "SG_PowerBi" -Members arhodes

El comando no dará ningún resultado, pero podemos verificar el miembro con PowerShell usando el cmdlet Get-ADGroupMember:

 Get-ADGroupMember -Identity "SG_PowerBi" | ft
powershell agregar usuario al grupo
PowerShell agregar usuario al grupo

Adición de varios usuarios a un grupo

También se puede agregar un solo usuario a un grupo con la consola de usuarios y equipos de Active Directory. Pero cuando necesita agregar varios usuarios a un grupo, usar PowerShell puede ser mucho más rápido.

Hay un par de formas de agregar varios usuarios a un grupo con PowerShell. La opción más común es simplemente especificar los usuarios:

# Adding the users Alan Rhodes, Flenn Parker and Mike Reyes to the group SG_PowerBi
Add-ADGroupMember -Identity "SG_PowerBi" -Members arhodes, fparker, mreyes

Pero eso requeriría que conozca el SAMAccountName de cada usuario. Otra opción es obtener primero a los usuarios en función de un filtro, por ejemplo, el título del trabajo, y luego agregarlos al grupo.

Para obtener los usuarios, vamos a utilizar el cmdlet Get-ADUser.

Primero vamos a obtener todos los usuarios con el título de trabajo «administrador de cuentas» y luego agregaremos cada usuario al grupo SG_PowerBi:

# Get all users with the job title "Account Manager" and add them to the group SG_PowerBi
Get-ADUser -Filter "title -eq 'account manager'" | ForEach-Object { Add-ADGroupMember -Identity "SG_PowerBi" -Members $_ }

Copiar miembros del grupo a otro grupo con PowerShell

También es posible copiar miembros del grupo a otro grupo con PowerShell. Pero tenga en cuenta que también puede agregar un grupo a otro grupo en Active Directory.

Para copiar los miembros del grupo, primero vamos a obtener todos los miembros del grupo existente y copiarlos en el nuevo grupo. Para ello vamos a utilizar el cmdlet Get-ADGroupMember.

# Get all the users from the group Sales Management and add them to the group SG_PowerBi
Get-ADGroupMember -Identity "Sales Management" | ForEach-Object { Add-ADGroupMember -Identity "SG_PowerBi" -Members $_ }

Como alternativa, también podría agregar el grupo «Gestión de ventas» al grupo «SG_PowerBi»:

Add-ADGroupMember -Identity "SG_PowerBi" -Members "Sales Management"

Agregar usuarios al grupo desde CSV con PowerShell

Cuando necesita agregar muchos usuarios a un grupo, a veces es más fácil usar un archivo CSV.

En el archivo CSV, podemos agregar fácilmente todos los usuarios. Con PowerShell, podemos leer el archivo CSV y agregar todos los usuarios al grupo correcto.

Creé un pequeño script de PowerShell que importará un archivo CSV y agregará todos los usuarios del archivo CSV al grupo seleccionado.

He hecho que la secuencia de comandos sea lo más flexible posible, por lo que para los usuarios, puede usar su nombre para mostrar, correo electrónico o UserPrincipalName.

Los scripts requieren un nombre de grupo y una ruta al archivo CSV. De forma predeterminada, utilizará la coma como delimitador para el archivo CSV y buscará a los usuarios según el nombre para mostrar.

Para el archivo CSV, puede crear una lista simple con los usuarios, sin necesidad de encabezados dentro del archivo CSV:

Bob Davis,
Erik Parker,
Jean Miles,
Kelly Rices,
Margie Baker,
Mathew Scott,
Owen Hopkins,

Puede copiar el script desde abajo o descargarlo .

[CmdletBinding()]
param (
    [Parameter(
      Mandatory = $true,
      HelpMessage = "Group name"
    )]
    [string] $groupName = "",

    [Parameter(
      Mandatory = $true,
      HelpMessage = "Path to CSV file"
    )]
    [string] $path = "",

    [Parameter(
      Mandatory = $false,
      HelpMessage = "CSV file delimiter"
    )]
    [string] $delimiter = ",",

    [Parameter(
      Mandatory = $false,
      HelpMessage = "Find users on DisplayName, Email or UserPrincipalName"
    )]
    [ValidateSet("DisplayName", "Email", "UserPrincipalName")]
    [string] $filter = "DisplayName"
)

Function Add-UsersToGroup {
    <#
    .SYNOPSIS
      Get users from the requested DN
    #>
    process{
        # Import the CSV File
        $users = (Import-Csv -Path $path -Delimiter $delimiter -header "name").name

        # Find the users in the Active Directory
        $users | ForEach {
            $user =  Get-ADUser -filter "$filter -eq '$_'" | Select ObjectGUID 

            if ($user) {
                Add-ADGroupMember -Identity $groupName -Members $user
                Write-Host "$_ added to the group"
            }else {
                Write-Warning "$_ not found in the Active Directory"
            }
        }
    }
}

# Load the Active Directory Module
Import-Module -Name ActiveDirectory

# Add user from CSV to given Group
Add-UsersToGroup

Para agregar usuarios, según su nombre para mostrar, al grupo «SG_PowerBi» desde el archivo CSV, puede ejecutar el siguiente comando:

.\Add-UsersToGroup.ps1 -GroupName "SG_PowerBi" -Path c:\temp\users.csv

Si desea utilizar el UserPrincipalName deberá establecer el parámetro de filtro:

.\Add-UsersToGroup.ps1 -GroupName "SG_PowerBi" -Path c:\temp\users.csv -Filter "UserPrincipalName"

El script mostrará una advertencia si no pudo encontrar al usuario en Active Directory. Y mostrará una lista de todos los usuarios que ha agregado al grupo.

Agregar usuarios al grupo desde CSV con PowerShell

El script no verifica si un usuario ya es miembro de un grupo, el cmdlet Add-ADGroupMember ya lo hace internamente.

Puede agregar el parámetro -DisablePermissiveModify al cmdlet en Windows Server 2019 para generar un error si ya existe un usuario.

Adición de usuarios a diferentes grupos desde CSV

También he creado una variante del script que le permite agregar usuarios de forma masiva a diferentes grupos.

De esta manera, puede crear un archivo CSV con en una columna los usuarios y el otro grupo al que desea agregarlos.

Este archivo CSV necesita nombres de columna, por lo que la primera columna debe estar etiquetada Usuario y la segunda columna Grupo

User,Group
Bob Davis,SG_PowerBi
Erik Parker,SG_Visio
Jean Miles,SG_Visio
Kelly Rices,SG_PowerBi
Margie Baker,SG_PowerBi
Mathew Scott,SG_Visio
Owen Hopkins,SG_PowerBi

Esta vez no necesitamos especificar el grupo, solo la ruta al archivo CSV, opcionalmente el delimitador y el filtro.

.\Add-UsersToDiffGroup.ps1 -path c:\temp\users.csv -filter "DisplayName"
agregar múltiples usuarios a un grupo

Puede copiar el script completo a continuación o descargarlo .

[CmdletBinding()]
param (
    [Parameter(
      Mandatory = $true,
      HelpMessage = "Path to CSV file"
    )]
    [string] $Path = "",

    [Parameter(
      Mandatory = $false,
      HelpMessage = "CSV file delimiter"
    )]
    [string] $Delimiter = ",",

    [Parameter(
      Mandatory = $false,
      HelpMessage = "Find users on DisplayName, Email or UserPrincipalName"
    )]
    [ValidateSet("DisplayName", "Email", "UserPrincipalName")]
    [string] $Filter = "DisplayName"
)

Function Add-UserToGroup {
    <#
    .SYNOPSIS
      Get users from the requested DN
    #>
    process{
      # Import the CSV File
      $users = Import-Csv -Path $path -Delimiter $delimiter

      # Find the users in the Active Directory
      $users | ForEach {
          $user = Get-ADUser -filter "$filter -eq '$($_.user)'" | Select ObjectGUID 

          if ($user) {
              Add-ADGroupMember -Identity $_.Group -Members $user
              Write-Host "$($_.user) added to $($_.Group)"
          }else {
              Write-Warning "$($_.user) not found in the Active Directory"
          }
      }
  }
}

# Load the Active Directory Module
Import-Module -Name ActiveDirectory

# Add user from CSV to given Group
Add-UserToGroup

Terminando

Usando PowerShell podemos agregar rápidamente un usuario a un grupo. Si no conoce el SAMAccountName del usuario, siempre puede buscarlo con el cmdlet Get-AdUser.

Si es nuevo en el uso de scripts de PowerShell, asegúrese de leer también este artículo.

Espero que este artículo le haya resultado útil, si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Cómo descargar un archivo con PowerShell

Cómo descargar un archivo con PowerShell

PowerShell es un excelente lenguaje de secuencias de comandos para escribir todo tipo de secuencias de comandos. Pero, ¿sabía que ...
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
Cómo usar Import-CSV en PowerShell

Cómo usar Import-CSV en PowerShell

Cuando trabajamos con PowerShell, podemos usar archivos CSV para importar datos a los sistemas o usarlos como una lista de ...
Leer Más
Uso de PowerShell para actualizar un usuario de AD desde un archivo CSV

Uso de PowerShell para actualizar un usuario de AD desde un archivo CSV

Necesitaba actualizar un grupo de usuarios de AD con sus nuevos títulos de trabajo. Ha comenzado un nuevo año y ...
Leer Más
Cómo exportar a un archivo con PowerShell Out-File

Cómo exportar a un archivo con PowerShell Out-File

La salida de los comandos de PowerShell se muestra de forma predeterminada en el terminal. Pero en algunas situaciones, es ...
Leer Más
Buzón: cambie la configuración del buzón con PowerShell

Buzón: cambie la configuración del buzón con PowerShell

El cmdlet Set-Mailbox en PowerShell nos permite cambiar la configuración del buzón en Exchange Server y Exchange Online. Podemos usar ...
Leer Más

Deja un comentario