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 $_
}
}