Función de PowerShell: Get-ADGroupMembershipperDepartment
En entornos de adultos, a menudo se produce una completa confusión. Los empleados de los departamentos son miembros de grupos de los que no deberían ser miembros.
Si hay un entorno de Active Directory limpio y ordenado, entonces puede utilizar la base de datos perfectamente para realizar consultas. Por ejemplo, si el nombre del departamento está en el campo departamento, se puede consultar la pertenencia al grupo de este usuario. Este artículo presenta una función avanzada y le permite consultar la membresía del grupo por departamento.
El atributo del departamento de director activo
De lo que estoy hablando es de esto:
Sigamos con los ejemplos de mi función.
Get-ADGroupMembershipperDepartamento
Esta función avanzada se puede implementar en su entorno PowerShell. Más sobre esto en la última parte.
El comando en acción. Muestra todos los usuarios del departamento determinado y sus membresías en grupos, incluidos los grupos anidados.
Sólo se define un parámetro: Departamento. Al final se le pedirá que imprima esto. Asegúrese de que haya una impresora predeterminada instalada en su sistema.
La función
function Get-ADGroupMembershipperDepartment {
[CmdletBinding()]
param
(
[Parameter(Position=0)]
[String]$Department
)
$user=Get-ADUser -filter {department -eq $Department} -Properties name,department
$result=@()
foreach ($u in $user)
{
$userdn = $u.DistinguishedName
$Nested = "(member:1.2.840.113556.1.4.1941:=$userdn)"
$a=Get-ADGroup -LDAPFilter $Nested -ResultPageSize 1000
$x=($a.Name) -join "`r`n"
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'User'=$u.Name
'Department'=$u.department
'Groups'=$x
})
}
$result | Format-Table -AutoSize -Wrap
$read=Read-Host -Prompt 'Do you want to print this? (Y/N)'
If ($read -eq 'Y')
{$result | Format-Table -AutoSize -Wrap | Out-Printer}
}
Si te gusta, hazlo permanente.
Hazlo permanente
Si le gusta mi enfoque, abra PowerShell ISE. Copie la función en su sesión ISE. Cree una carpeta en C:\Program Files\Windows PowerShell\Modules y guarde el código como archivo psm1. Asegúrese de que el nombre de su archivo y el nombre de la carpeta coincidan.
De ahora en adelante, PowerShell cargará el módulo personalizado cada vez que se inicie PowerShell.
Reconocimiento
Muchas gracias a los grandes chicos que me ayudaron a salir de mi desastre con los grupos anidados en Technet. Un agradecimiento especial a Richard Mueller por su publicación que me ayudó tanto.
https://social.technet.microsoft.com/Forums/ie/en-US/f238d2b0-a1d7-48e8-8a60-542e7ccfa2e8/recursive-retrieval-of-all-ad-group-memberships-of-a-user? foro=ITCG



