Búsqueda de sitios web

Agregue usuarios a múltiples grupos con PowerShell


¿Cómo agregar usuarios de forma masiva a varios grupos de AD desde un archivo CSV con PowerShell? Puede seleccionar varios usuarios en AD y agregarlos a varios grupos, pero ¿qué pasa si tiene usuarios en diferentes unidades organizativas? Esta es una excelente manera de automatizar la tarea con PowerShell. En este artículo, aprenderá cómo agregar varios usuarios a varios grupos con un script de PowerShell.

Información

Debe agregar una lista de usuarios en un archivo CSV a varios grupos de seguridad. La lista se completa con el atributo SamAccountName.

Hay dos opciones para realizar la tarea:

  • Busque manualmente los usuarios en Usuarios y equipos de Active Directory y agréguelos a los grupos de seguridad. Si tiene una lista larga, esto llevará mucho tiempo. No sólo eso, es posible que extrañes a un usuario de la lista.

  • Automatice la búsqueda con PowerShell y agregue los usuarios a los grupos de seguridad. Le llevará menos tiempo y no perderá ningún usuario.

PowerShell es excelente para la automatización y eso es lo que recomendamos usar.

Nota: ¿Quieres agregar usuarios a un solo grupo? Lea Agregar usuarios al grupo con PowerShell.

Verificar grupos de seguridad

Cree grupos de seguridad si no los tiene en Active Directory. En este ejemplo, tenemos los grupos de seguridad Finanzas, RRHH, Pilot y Ventas. Ya hay usuarios agregados a estos grupos.

Es importante que copie el Nombre del grupo (anterior a Windows 2000) y lo agregue al archivo CSV.

Leer más: enumerar todos los usuarios de un grupo de seguridad a través de PowerShell »

Verifique el archivo CSV con el cmdlet Import-Csv

Verifique el archivo CSV y asegúrese de que tenga los encabezados correctos. En nuestro caso, es el archivo CSV Demo1.csv con los encabezados SamAccountName y Grupo.

Importante: Asegúrese de que no haya espacios vacíos detrás de cada línea. Si es así, obtendrá errores y el script no podrá agregar los usuarios. Una forma excelente es agregar comillas para rodear el campo.

Coloque el archivo CSV en la carpeta C:\Temp. Crea una carpeta temporal si no tienes una.

Ejecute Windows PowerShell como administrador. Asegúrese de que PowerShell pueda leer el archivo, ejecute el cmdlet Import-Csv.

PS C:\> Import-Csv "C:\Temp\Demo1.csv"

SamAccountName Group
-------------- -----
Ali.Tajran     Pilot;HR
John.Watkin    Unknown
Amanda.Morgan
Amanda.Morgan  Support
Amanda.Morgan  HR;Pilot
Khalid.Abbas   Agency;HR;Helpdesk
Richard.Grant  Helpdesk

Sigue leyendo: Importar delimitador CSV PowerShell »

Agregar usuarios a varios grupos de secuencias de comandos de PowerShell

Descargue el script de PowerShell Add-ADUsers-Multi.ps1 o copie y pegue el siguiente código en el Bloc de notas. Asígnale el nombre ADUsers-Multi.ps1 y colócalo en la carpeta C:\scripts. Cree una carpeta scripts si no tiene una.

# Start transcript
Start-Transcript -Path C:\Temp\Add-ADUsers-Multi.log -Append

# Import AD Module
Import-Module ActiveDirectory

# Import the data from CSV file and assign it to variable
$List = Import-Csv "C:\Temp\Demo1.csv"

foreach ($User in $List) {
    # Retrieve UserSamAccountName and ADGroup
    $UserSam = $User.SamAccountName
    $Groups = $User.Group

    # Retrieve SamAccountName and ADGroup
    $ADUser = Get-ADUser -Filter "SamAccountName -eq '$UserSam'" | Select-Object SamAccountName
    $ADGroups = Get-ADGroup -Filter * | Select-Object DistinguishedName, SamAccountName

    # User does not exist in AD
    if ($ADUser -eq $null) {
        Write-Host "$UserSam does not exist in AD" -ForegroundColor Red
        Continue
    }
    # User does not have a group specified in CSV file
    if ($Groups -eq $null) {
        Write-Host "$UserSam has no group specified in CSV file" -ForegroundColor Yellow
        Continue
    }
    # Retrieve AD user group membership
    $ExistingGroups = Get-ADPrincipalGroupMembership $UserSam | Select-Object DistinguishedName, SamAccountName

    foreach ($Group in $Groups.Split(';')) {
        # Group does not exist in AD
        if ($ADGroups.SamAccountName -notcontains $Group) {
            Write-Host "$Group group does not exist in AD" -ForegroundColor Red
            Continue
        }
        # User already member of group
        if ($ExistingGroups.SamAccountName -eq $Group) {
            Write-Host "$UserSam already exists in group $Group" -ForeGroundColor Yellow
        } 
        else {
            # Add user to group
            Add-ADGroupMember -Identity $Group -Members $UserSam
            Write-Host "Added $UserSam to $Group" -ForeGroundColor Green
        }
    }
}
Stop-Transcript

Línea 8: Edite el nombre del archivo CSV y la ruta.

En el siguiente paso, veremos el script de PowerShell para agregar varios usuarios a varios grupos.

Agregue usuarios de forma masiva a varios grupos desde un archivo CSV

Ejecute Windows PowerShell como administrador. Cambie la ruta a la carpeta de scripts y ejecute el script de PowerShell Add-ADUsers-Multi.ps1.

El script revisará todos los usuarios en el archivo CSV. El parámetro -WhatIf se agrega en el script en la línea 44. Si ejecuta el script, no sucederá nada en el entorno. En su lugar, obtendrá un resultado que muestra lo que sucederá.

El script Add-ADUsers-Multi.ps1 mostrará:

  • Si el usuario es agregado al grupo

  • Si el usuario ya existe en el grupo

  • Si el usuario no tiene ningún grupo especificado en el archivo CSV

  • Si el usuario no existe en Active Directory

  • Si el grupo no existe en Active Directory

PS C:\> cd c:\scripts
PS C:\scripts> .\Add-ADUsers-Multi.ps1
Transcript started, output file is C:\Temp\Add-ADUsers-Multi.log
Ali.Tajran already exists in group Pilot
Ali.Tajran already exists in group HR
John.Watkin does not exist in AD
Amanda.Morgan has no group specified in CSV file
Support group does not exist in AD
What if: Performing the operation "Set" on target "CN=HR,OU=Groups,OU=Company,DC=exoip,DC=local".
Added Amanda.Morgan to HR
Amanda.Morgan already exists in group Pilot
Khalid.Abbas does not exist in AD
Helpdesk group does not exist in AD
Transcript stopped, output file is C:\Temp\Add-ADUsers-Multi.log

Elimine el parámetro -WhatIf del script de PowerShell y vuelva a ejecutar el script. Los usuarios del CSV se agregan al grupo.

Transcript started, output file is C:\Temp\Add-ADUsers-Multi.log
Ali.Tajran already exists in group Pilot
Ali.Tajran already exists in group HR
John.Watkin does not exist in AD
Amanda.Morgan has no group specified in CSV file
Support group does not exist in AD
Added Amanda.Morgan to HR
Amanda.Morgan already exists in group Pilot
Khalid.Abbas does not exist in AD
Helpdesk group does not exist in AD
Transcript stopped, output file is C:\Temp\Add-ADUsers-Multi.log

Verificar grupo de seguridad con usuarios agregados

Cuando finalice el script, eche un vistazo a Usuarios y computadoras de Active Directory. Vaya a un par de grupos de seguridad y confirme que ve los usuarios del archivo CSV en la pestaña de miembros.

El resultado se mostrará en la consola de Windows PowerShell. No solo eso, mostrará el resultado en un registro porque se agrega una transcripción al script PS. Vaya a la carpeta C:\temp y abra el archivo Add-ADUsers-Multi.log.

¡Todo luce genial! ¿Esto le ayudó a agregar usuarios de forma masiva a varios grupos desde un archivo CSV con PowerShell?

Sigue leyendo: Exporta usuarios de AD a CSV con PowerShell »

Conclusión

En este artículo, aprendió cómo agregar varios usuarios a varios grupos desde CSV con PowerShell. Descargue el script de PowerShell Add-ADUsers-Multi.ps1 y edite la ruta CSV. Ejecute el script y verifique que los usuarios de AD se agreguen correctamente a los grupos. PowerShell es excelente para automatizar el proceso.

Disfrutaste este artículo? También te puede gustar Crear usuarios de Active Directory desde CSV con PowerShell. No olvides seguirnos y compartir este artículo.

Artículos relacionados