Назад | Перейти на главную страницу

Как автоматически удалить отключенных пользователей AD из глобального списка адресов в Exchange 2010

Когда сотрудник по какой-либо причине покидает нашу организацию, в настоящее время мы отключаем его учетную запись AD, но не удаляем ее немедленно. Однако проблема в том, что эти пользователи все еще отображаются в глобальном списке адресов.

Я уверен, что есть сценарий PowerShell для их удаления, но я хотел бы упростить работу.

Я надеюсь, что кто-то здесь сможет предоставить лучший способ отключить пользователей, который автоматически удалит их из глобального списка адресов в процессе.

Пока я могу думать о двух возможных решениях.

  1. Создайте сценарий, который запускает сценарий PS каждый час, удаляя отключенных пользователей из глобального списка адресов.

  2. Используйте команду PS, которая одновременно отключит пользователя и удалит его из глобального списка адресов.

Вариант 2, вероятно, лучший вариант, поэтому, если бы кто-то мог помочь с этим, я был бы очень признателен.

Заранее спасибо.

Не нужно изобретать колесо, это элегантное решение было найдено на 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
}

Сохранить как Disable-User.ps1 и беги .\Disable-User.ps1 SAMaccountname disable

Существует более простое решение, чем описанное выше, и его можно выполнить в две строки при использовании командлетов Quest AD PowerShell в консоли управления 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"

Есть более простой способ:

  1. Перейдите в EMC> почтовый ящик пользователя> свойства
  2. На вкладке «Общие» вы увидите флажок hide from exchange address listустановите этот флажок.
  3. нажмите "Применить"

После этого никто не сможет видеть этого пользователя в глобальном списке адресов.

Скрыть отдельных пользователей из списка адресов

Единственного пользователя, имя которого известно, вы можете скрыть с помощью этой команды:

Set-ADUser "ваше имя пользователя" -Add @ {msExchHideFromAddressLists = "TRUE"}

Это может быть полезно, если вы создали сценарий для отключения бывших пользователей. В этом случае вы можете передать имя пользователя в переменной.

Запуск из командной консоли Exchange:

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