Búsqueda de sitios web

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


Cuando necesita 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 del sistema. Cuando se trata de un solo usuario, entonces puedes utilizar perfectamente la consola de administración de Active Directory. Pero cuando necesita actualizar usuarios de forma masiva, PowerShell es el camino a seguir.

En este artículo, explicaré cómo agregar uno o varios usuarios a un grupo con PowerShell. Además, veremos cómo utilizar un archivo CSV con usuarios para agregarlos a un grupo. Y al final, encontrará dos scripts de PowerShell que le permitirán importar fácilmente archivos CSV.

PowerShell: agregue usuario al grupo con Add-ADGroupMember

Para agregar usuarios a un grupo en PowerShell, usaremos el cmdlet Add-ADGroupMember. Asegúrese de haber instalado el módulo PowerShell Active Directory antes de comenzar.

El cmdlet Add-ADGroupMember se puede utilizar para agregar usuarios, cuentas de servicio, computadoras o incluso otros grupos a un grupo de AD. El cmdlet solo requiere la identidad del grupo al que desea agregar miembros y una lista de miembros para agregar.

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

  • nombre distinguido
  • objetoGUID (GUID)
  • objectSid (identificador de seguridad)
  • SAMAccountName (nombre de la 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 utilizar 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

Agregar varios usuarios a un grupo

También se puede agregar un solo usuario a un grupo con la consola 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 usted conozca el SAMAccountName de cada usuario. Otra opción es obtener primero los usuarios según un filtro, por ejemplo el puesto de trabajo, y luego agregarlos al grupo. Para obtener los usuarios, utilizaremos el cmdlet Get-ADUser.

Primero obtendremos todos los usuarios con el puesto 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 $_ }

Copie los 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 obtendremos todos los miembros del grupo existente y los copiaremos al nuevo grupo. Para ello, utilizaremos 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 puedes añadir 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 necesitas 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 el script sea lo más flexible posible, por lo que para los usuarios, pueden 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 aquí desde mi página de Github.

[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 UserPrincipalName, deberá configurar 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 enumerará todos los usuarios que ha agregado al grupo.

El script no comprueba 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.

Agregar usuarios a diferentes grupos desde CSV

También creé una variante del script que le permite agregar usuarios de forma masiva a diferentes grupos. De esta manera puedes crear un archivo CSV con en una columna los usuarios y el otro grupo al que deseas agregarlos.

Este archivo CSV necesita nombres de columnas, por lo que la primera columna debe tener la etiqueta 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"

Puede copiar el script completo a continuación o descargarlo aquí desde mi página de Github.

[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

Concluyendo

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 te haya resultado útil. Si tienes alguna pregunta, deja un comentario a continuación.

Artículos relacionados