Como remover automaticamente os usuários do AD desativados da GAL no Exchange 2010

2

Quando um funcionário deixa nossas organizações por algum motivo, atualmente desativamos a conta do AD, mas não a excluímos imediatamente. No entanto, o problema é que esses usuários ainda aparecem na Lista de Endereços Global.

Tenho certeza de que há um script do PowerShell para removê-los, mas gostaria de simplificar as coisas.

Espero que alguém possa fornecer uma maneira melhor de desabilitar usuários, o que os removerá automaticamente da GAL no processo.

Até agora, posso pensar em duas soluções possíveis.

  1. Crie um script que execute um script PS a cada hora que removerá os usuários com deficiência da GAL.

  2. Use um comando PS que irá desativar simultaneamente um usuário e removê-lo da GAL.

A opção 2 é provavelmente a melhor opção, então se alguém puder ajudar com isso, eu agradeceria muito.

Obrigado antecipadamente.

    
por Windows Ninja 08.03.2012 / 17:24

5 respostas

6

Não há necessidade de reinventar a roda, encontrei esta solução elegante em petri.co.il :

# http://www.petri.co.il/forums/showthread.php?p=109975 
# usage: Disable-User [accountname] [enable/disable]

function get-dn ($SAMName)    {
    $root = [ADSI]''
     $searcher = new-object System.DirectoryServices.DirectorySearcher($root)
    $searcher.filter = "(&(objectClass=user)(sAMAccountName= $SAMName))"
    $user = $searcher.findall()

    if ($user.count -gt 1)      {     
            $count = 0
                foreach($i in $user)            { 
            write-host $count ": " $i.path 
                    $count = $count + 1
                }

            $selection = Read-Host "Please select item: "
        return $user[$selection].path

          }      else      { 
          return $user[0].path
          }
}

$Name = $args[0]
$status = $args[1]
$path = get-dn $Name

if ($path -ne $null)    {

    "'" + $path + "'"  
    if ($status -match "enable")     {
        # Enable the account
        $account=[ADSI]$path
        $account.psbase.invokeset("AccountDisabled", "False")
        $account.setinfo()
        Set-Mailbox "$Name" -HiddenFromAddressListsEnabled $False
    }    else    {
        # Disable the account
        $account=[ADSI]$path
        $account.psbase.invokeset("AccountDisabled", "True")
        $account.setinfo()
        Set-Mailbox "$Name" -HiddenFromAddressListsEnabled $True
    }
}    else    {
    write-host "No user account found!" -foregroundcolor white -backgroundcolor red
}

Salve como Disable-User.ps1 e execute .\Disable-User.ps1 SAMaccountname disable

    
por 08.03.2012 / 17:33
6

Há uma solução mais fácil do que a acima e pode ser realizada em duas linhas ao usar os Commandlets do Quest AD PowerShell no Console de Gerenciamento do Exchange.

param(
[string]$username = $(throw "A user ID is required.") #throw exception if no value provided
)

Disable-QADUser -Identity $username -service "dc.domain.local:389"
Set-Mailbox  -identity "domain\$username" -HiddenFromAddressListsEnabled $true -DomainController "dc.domain.local"
    
por 08.03.2012 / 18:52
0

Existe uma maneira muito mais fácil:

  1. Ir para o EMC > caixa de correio do usuário > propriedades
  2. Na guia geral, você verá uma caixa de seleção hide from exchange address list , marque esta caixa.
  3. clique em aplicar

Ninguém conseguirá ver esse usuário na GAL depois disso.

    
por 01.03.2013 / 18:19
0

Ocultar usuários únicos da lista de endereços

Um usuário único, cujo nome de usuário é conhecido, você pode ocultar com este comando:

Set-ADUser "seu nome de usuário" -Add @ {msExchHideFromAddressLists="TRUE"}

Isso pode ser útil se você criou um script para desabilitar usuários antigos. Nesse caso, você pode passar o nome de usuário em uma variável.

    
por 09.12.2017 / 09:59
0

Executar a partir do Shell de Gerenciamento do Exchange:

Get-Mailbox -ResultSize unlimited |Where{($_.UserAccountControl -like “AccountDisabled*”)} | set-mailbox -HiddenFromAddressListsEnabled $true
    
por 20.01.2018 / 05:41