PowerShell - Encontrando todos os membros do grupo de usuários e expulsando-os deles

5

como diz o título, tenho que encontrar todos os grupos dos quais o usuário é membro e excluir sua participação de todos eles.

Eu tentei isso:

get-adgroup -filter * | where {(Get-ADGroupMember $_ | foreach {$_.PrimarySmtpAdress}) -contains "[email protected]"}

mas ele não retorna nada (embora EXISTEM alguns itens que devem ser retornados)

quanto à exclusão eu não encontrei nenhuma maneira de fazer isso, alguém poderia me dar um exemplo de um código que faz isso?

Estou falando de grupos de segurança.

    
por NirPes 04.06.2014 / 18:09

1 resposta

8

Assumindo que todos os backlinks estão em vigor, este é um processo simples de 3 etapas facilmente feito com o powershell:

# 1. Retrieve the user in question:
$User = Get-ADUser "username" -Properties memberOf

# 2. Retrieve groups that the user is a member of
$Groups = $User.memberOf |ForEach-Object {
    Get-ADGroup $_
} 

# 3. Go through the groups and remove the user
$Groups |ForEach-Object { Remove-ADGroupMember -Identity $_ -Members $User }

Se você não quiser confirmar manualmente a remoção do usuário para cada grupo, use -Confirm:$false :

Remove-ADGroupMember -Identity $_ -Members $User -Confirm:$false

Posso acrescentar que você provavelmente deseja registrar todos os membros do grupo que você remover, apenas para facilitar a recuperação. Antes da remoção, imprima os DNs do grupo em um arquivo de texto, identificando o usuário em questão:

$LogFilePath = "C:\BackupLocation\user_" + $User.ObjectGUID.ToString() + ".txt"
Out-File $LogFilePath -InputObject $(User.memberOf) -Encoding utf8

Isso gravará todos os grupos no arquivo e permitirá a reversão fácil e confiável

    
por 04.06.2014 / 18:21