Estoy tratando de obtener solo miembros habilitados que estén en varios grupos, pero no estoy seguro de cómo lograrlo en el formato que quiero. Mi guión actual es el siguiente.
$GroupList = @('GroupA','GroupB'
)
$Groupusers = @()
foreach ($Groups in $GroupList)
{
$Groupusers += Get-ADGroupMember -Identity $Groups | select @{Name="Groups";Expression={$Groups}},name
}
$Groupusers | Export-Csv -Path "C:\Users\Me\Documents\users.csv" -NoTypeInformation -Encoding Unicode
El script anterior funciona y formatea la salida para lo que busco, pero esto también incluye incluso a los usuarios discapacitados.
Producción:
Nombre del grupo
GrupoA UsuarioA
GrupoB UsuarioB
Probé el siguiente script, que me proporciona todos los usuarios habilitados, pero no en un formato como el script anterior.
$groupname = @('GroupA', 'GroupB')
$Groupusers=@()
foreach ($group in $groupname)
{
$Groupusers += Get-ADGroupMember -Identity $group | ? {$_.objectclass -eq "user"}
}
$result= @()
foreach ($activeusers in $Groupusers)
{
$result += (Get-ADUser -Identity $activeusers | ? {$_.enabled -eq $true} | select Name, Enabled)
}
$result
¿Cómo puedo lograr el resultado anterior pero solo con usuarios habilitados? Gracias.
Respuesta1
Si desea conservar el formato del primer script, esto debería funcionar para usted. Simplemente cree una segunda matriz para contener solo los $groupusers que están habilitados y escriba solo ese subconjunto en su archivo de salida.
$GroupList = @('GroupA','GroupB')
$Groupusers = @()
foreach ($Groups in $GroupList)
{
$Groupusers += Get-ADGroupMember -Identity $Groups | select @{Name="Groups";Expression={$Groups}},name
}
$activeusers = @()
foreach ($user in $Groupusers)
{
$n = $user.name
$props = get-aduser -filter "name -eq '$n'" | select samaccountname, enabled
if ($props.enabled)
{
$activeusers += $user
}
}
$activeusers | Export-Csv -Path "C:\Users\Me\Documents\users.csv" -NoTypeInformation -Encoding Unicode