Crear informes de OU de Active Directory con PowerShell

Cree informes de OU de Active Directory con PowerShell. Una unidad organizativa (OU) es un contenedor de Directorio Activo (AD) donde se pueden almacenar usuarios, grupos, computadoras y otras OUs. Cada dominio de AD puede tener su jerarquía de unidades organizativas. Este artículo cubrirá la gestión de OUs y cómo utilizar scripts de PowerShell de Windows para mover, crear, eliminar y generar informes de OU en AD y vincular y hacer cumplir una directiva de grupo a una OU.

Cree informes de OU de Active Directory con Powershell

Requisitos previosSi queremos seguir los ejemplos de scripts siguientes en este artículo, necesitaremos instalar los componentes previos requeridos:

Si queremos seguir los scripts de ejemplo de este artículo, necesitaremos instalar los componentes previos requeridos:

Bueno, ¿cómo crear informes de OU de Active Directory con PowerShell? Vamos a averiguarlo.

Comprender los comandos de Unidad Organizativa

A Microsoft Active Directory domain container that can hold users, groups, and computers is an organizational unit (OU). It is the smallest unit to which a Windows system administrator can assign a Group Policy setting or account permission. An organizational unit may contain multiple OUs, but each attribute within the containing OU must be distinct.

Objetos de otros dominios no pueden estar contenidos dentro de las unidades organizativas de Active Directory. Las secciones siguientes abordarán los comandos fundamentales para administrar las UOs.

Crear UOs en Active Directory con PowerShell

Podemos crear una nueva unidad organizativa en AD utilizando elNew-ADOrganizationalUnitcomando y especificando el nombre de un nuevo objeto OU. Windows PowerShell por defecto creará la unidad organizativa en la raíz del dominio. Por ejemplo, el siguiente comando creará una OU llamada IT en el controlador de dominio (DC):

New-ADOrganizationalUnit “IT

Si necesitamos un camino LDAP de OU diferente, utilice el-Pathparámetro del cmdlet para especificar su nombre distinguido (DN):

New-ADOrganizationalUnit “IT” –Path “OU=Users,DC=InfraSOS,DC=com”

Mover una OU en Active Directory con PowerShell

Si necesitamos mover una OU a otra ubicación, utilice el Move-ADObject cmdlet. Es fundamental tener en cuenta que no debemos proteger la OU de destino de la eliminación accidental. Si es así, use el siguiente comando para eliminar la protección:

Set-ADOrganizationalUnit -Identity "OU=IT,OU=Users,DC=InfraSOS,DC=Com" -ProtectedFromAccidentalDeletion $False

Ahora podemos mover la OU a otra ubicación:

Move-ADObject -Identity "OU=Regions,OU=Managers,DC=InfraSOS,DC=Com" -TargetPath "OU=IT,DC=InfraSOS,DC=Com"

Cambiar el nombre de una OU en Active Directory con PowerShell

Utilice el Rename-ADObject cmdlet para cambiar el nombre de una unidad organizativa. El parámetro Identity especifica el objeto AD que se va a renombrar y requiere ya sea el DN o el GUID. Por ejemplo, este comando cambia el nombre de la OU IT a Marketing:

Rename-ADObject -Identity "OU=Regions,OU=IT,DC=InfraSOS,DC=COM" -NewName Marketing

También podemos utilizar el Get-ADOrganizationalUnit cmdlet con el -Filter parámetro, que no requiere la ruta LDAP completa a la unidad organizativa (OU). Sin embargo, ese cmdlet buscará en todo el Active Directory (AD), y el script aplicará la acción del comando a todas las Unidades Organizativas que contengan el término de búsqueda en sus nombres:

Get-ADOrganizationalUnit -Filter "Name -eq 'Zones'" | Rename-ADObject -NewName Area

Discutiremos más sobre los comandos para obtener unidades organizativas una vez que empecemos a generar informes.

Aplicar una Directiva de Grupo a una OU en Active Directory con PowerShell.

Para asignar una Directiva de Grupo a una Unidad Organizativa, podemos utilizar el New-GPLink comando, que vincula el Objeto de Directiva de Grupo (GPO) especificado y la Unidad Organizativa. Además, podemos identificar cualquiera de las siguientes propiedades para el enlace:

  • Habilitado – Si el enlace tiene un estado habilitado, se aplican las configuraciones procesadas por el GPO cuando se aplica la Directiva de Grupo para el sitio, dominio y OU.
  • Enforced – Si el enlace tiene un estado enforced, no podemos bloquear la OU en un contenedor de nivel inferior.
  • Orden – El estado de orden especifica la prioridad de las configuraciones del GPO.

Por ejemplo, el siguiente comando vincula el GPO Block a la Unidad Organizativa IT con el enlace habilitado y reforzado:

New-GPLink -Name "Block" -Target "OU=Districts,OU=IT, DC=InfraSOS, DC=com" -LinkEnabled Yes -Enforced Yes

Mover Usuarios y Equipos a una Nueva OU en un AD con PowerShell

Después de haber creado una Unidad Organizativa y opcionalmente haberla vinculado a un GPO, la poblaremos con usuarios y equipos. ElMove-ADObjectcmdlet en PowerShell mueve cualquier objeto o conjunto de objetos de directorio activo a una OU diferente. ElIdentityparámetro indica qué objeto debe ser reubicado el objeto o contenedor de Active Directory.

Es crucial tener en cuenta que debemos ingresar la ruta completa del objeto LDAP o SID; no podemos usar su SamAccountName. El siguiente ejemplo muestra cómo mover a un usuario a la OU IT:

Move-ADObject -Identity "CN=marion,CN=Users,DC=InfraSOS,DC=com" -TargetPath "OU=IT,OU=Users,DC=InfraSOS,DC=com"

Utilice la sintaxis exacta para mover objetos de computadora . Por ejemplo, el siguiente comando transferirá la computadora DESKTOP-01 al contenedor Computers:

Move-ADObject -Identity "CN=DESKTOP-01,OU=Computers,DC=InfraSOS,DC=com" -TargetPath "CN=Workstations,DC=InfraSOS,DC=com"

Mover en masa computadoras y usuarios de AD a otra OU

Si tenemos una lista predefinida de objetos para mover, podemos guardarla como un archivo de texto y luego importarlo a Active Directory. Prepare su lista agregando un objeto de AD por línea. El archivo de texto que contiene la lista debería tener un aspecto similar a este:

Use este script de PowerShell para mover cuentas de usuario de AD listadas en un archivo de texto:

$destOU =  "OU=Users,OU=IT,DC=InfraSOS,DC=com"
$usersList = Get-Content -Path "C:\temp\users.txt"

$usersList  | ForEach-Object {
     $userName  = (Get-ADUser -Identity $_.Name).distinguishedName
     Move-ADObject  -Identity $userName  -TargetPath $destOU
 }

Para mover cuentas de computadora de AD listadas en un archivo de texto, use el siguiente script de PowerShell:

$computers = Get-Content -Path "C:\Temp\Computers.txt"

$destOU =  "OU=Computers,OU=IT,DC=InfraSOS,DC=com"
ForEach( $computer in $computers){
    Get-ADComputer $computer |
    Move-ADObject -TargetPath $destOU
}

Eliminar una OU de Active Directory con PowerShell

El Remove-ADOrganizationalUnit cmdlet elimina una OU. Sin embargo, no debemos proteger la OU de una eliminación accidental. Utilizando los Get-ADOrganizationalUnit y Set-ADOrganizationalUnit cmdlets, podemos eliminar la opción de eliminación no deseada para cada OU con la palabra Zonas en su nombre:

Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Set-ADOrganizationalUnit  -ProtectedFromAccidentalDeletion $False

Utilice el siguiente cmdlet para eliminar cada OU que contenga Zonas en su nombre de AD:

Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Remove-ADOrganizationalUnit –Recursive

El sistema nos solicitará confirmar la eliminación:

Tenga en cuenta que el -Recursive parámetro elimina tanto la OU como todos sus objetos hijos. AD eliminará los objetos hijos incluso si la protección contra la eliminación está activada para ellos.

Administrar Unidades Organizativas en AD

Ahora que hemos discutido los comandos básicos y los parámetros relacionados con las Unidades Organizativas, discutiremos aún más cómo podemos generar informes de OU informes con PowerShell.

Obtener una lista de todas las OUs con PowerShell

Utilizaremos el Get-ADOrganizationalUnit cmdlet. Primero, ordene por CanonicalName. Este comando muestra una estructura de OU que es más fácil de leer.

Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
Format-Table CanonicalName, DistinguishedName

El siguiente es un ejemplo salida en PowerShell cuando ejecutamos el comando:

La salida con todas las OUs en AD es una excelente lista. Pero, ¿cómo sabemos si la OU contiene algún usuarios?

Obtener una lista de todos los OUs, incluyendo el conteo de usuarios, con PowerShell

Nos gusta usar PowerShell para obtener una lista de los OUs, incluyendo el conteo de usuarios. Este comando nos dirá si hay usuarios en el OU.

Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
ForEach-Object {
    [pscustomobject]@{
        Name          = Split-Path $_.CanonicalName -Leaf
        CanonicalName = $_.CanonicalName
        UserCount     = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
    }
}

Mostrará una salida con la propiedad de columna UserCount. Si el valor de la propiedad UserCount es cero, el OU no tiene usuarios. No aparecerá si el OU contiene un objeto de equipo. Este comando solo verificará y mostrará un conteo de usuarios.

Exportar OUs en AD a un archivo CSV con PowerShell

Queremos exportar la lista de OUs en AD ahora que la hemos visto. Entonces, el script usará PowerShell para obtener las Unidades Organizativas y exportarlas a un archivo de texto.

$results = Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Sort-Object CanonicalName |
ForEach-Object {
    [pscustomobject]@{
        Name          = Split-Path $_.CanonicalName -Leaf
        CanonicalName = $_.CanonicalName
        UserCount     = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
    }
}
$results | Out-File C:\export_OUs.txt -Encoding UTF8

Cambie la última línea al siguiente comando si queremos exportar a un archivo CSV:

$results | Export-Csv -Path C:\export_OUs.csv -NoTypeInformation -Encoding UTF8

Encuentre el archivo exportado en la ubicación especificada después de ejecutar el comando anterior.

Gracias por leer Crear Informes de OU de Active Directory con PowerShell. Vamos a concluir ahora.

Conclusión de Crear Informes de OU de Active Directory con PowerShell

Ahora que hemos aprendido cómo administrar OUs en Active Directory utilizando scripts de PowerShell, podemos automatizar diversas operaciones relacionadas con la gestión de OU y generar informes en consecuencia. Asegúrese de que antes de intentar estos comandos, habilite la función de Papelera de Reciclaje de Active Directory para deshacer fácilmente cualquier eliminación errónea. También es inteligente realizar un seguimiento cuidadoso de todos los cambios en sus unidades organizativas.

No olvide consultar nuestro contenido de PowerShell en nuestro blog aquí.

Source:
https://infrasos.com/create-active-directory-ou-reports-with-powershell/