Serviço de limpeza do Active Directory - Remover grupos de usuários com deficiência

1

Estou lutando para encontrar uma maneira decente de fazer isso. Por um motivo ou outro (não importante, é o que é), temos um grande número de usuários que estão desabilitados, mas ainda são membros de todos os grupos pré-desabilitados. Isso está causando alguns problemas, como falhas na lista de distribuição, dificuldade em enumerar o ACL etc.

Alguém sabe de uma maneira fácil de remover grupos de usuários que estão desativados? Para facilitar, todos eles existem em um contêiner agora, então se é algo que pode ser feito no nível do contêiner, isso é útil. Além disso, sei que poderíamos excluir as contas, mas para auditoria e interligação com nosso sistema de RH, isso não é possível.

    
por Kip 08.06.2011 / 12:08

3 respostas

3

Este arquivo de lote de amostra fará o que você está pedindo. Você precisará editar o comando dsquery para usar sua OU específica de StartNode - O OU=SomeOU,DC=example,DC=com bit:

@ECHO OFF
REM Get list of disabled users in the domain
FOR /F "usebackq delims=;" %%A IN ('dsquery user "OU=SomeOU,DC=example,DC=com" -disabled -limit 0') DO ( 
    echo User: %%A
    REM Enumerate user's group memberOf, exclude "Domain Users" group
    FOR /F "usebackq delims=;" %%B IN ('dsget user %%A -memberof ^| find /V "Domain Users"') DO (
        ECHO Group: %%B
        REM Remove user %%A from Group %%B
        dsmod group %%B -rmmbr %%A
    )
)
    
por 08.06.2011 / 13:13
1

Usando os cmdlets do Powershell e do Quest AD disponíveis aqui , o seguinte script do PowerShell deve resolver o problema -

$users =  Get-QADUser -Disabled
foreach ($user in $users)
{
    Remove-QADMemberOf -Identity $user -RemoveAll
}
    
por 09.06.2011 / 00:10
0

Recentemente, eu queria remover grupos de (quase todos) usuários com deficiências, por isso escrevi meu próprio conjunto de funções no PowerShell v3 (que não exige software de terceiros).

Para composição e reutilização, escrevi primeiro uma função para remover o usuário especificado de todos os grupos (além do grupo principal). Eu poderia adicionar uma opção para especificar o tipo de grupo (segurança ou distribuição), mas não preciso dessa funcionalidade no momento.

Function Remove-UserFromGroups ($User) {
    $PrimaryGroup = (Get-ADUser $User -Properties PrimaryGroup).PrimaryGroup
    Get-ADPrincipalGroupMembership $User |
        ForEach-Object {
            If ($_.distinguishedName -ne $PrimaryGroup) {
                Write-Output "Removing ‘$($User.Name)’ from ‘$_’"
                Remove-ADGroupMember $_ -Members $User  # -Confirm:$False
            }
        }
}

Em seguida, usei essa função para remover todos os usuários desabilitados de todos os grupos (além do grupo principal). Eu uso uma base de pesquisa para que uma OU possa ser especificada e também tenho uma lista de usuários padrão / do sistema que não devem ter sua associação de grupo alterada.

Function Remove-DisabledUsersFromGroups (
    $SearchBase = 'OU=department,DC=example,DC=com',
    $ExcludedUsers = @('krbtgt', 'SUPPORT_388945a0', 'Guest')
) {
    Get-ADUser -Filter { Enabled -eq $False } -SearchBase $SearchBase  |
        Where { $_.Name -notin $ExcludedUsers } |
        ForEach-Object {
            Remove-UserFromGroups $_
        }
}
    
por 09.03.2017 / 17:02