Exchange-2010
如何在 Exchange 2010 中從 GAL 中自動刪除禁用的 AD 使用者
當員工出於任何原因離開我們的組織時,目前我們會禁用他們的 AD 帳戶,但不會立即將其刪除。但是,這樣做的問題是這些使用者仍然出現在全域地址列表中。
我確信有一個 PowerShell 腳本可以刪除它們,但我想讓事情變得更加精簡。
我希望這裡的某個人能夠提供一種更好的方法來禁用使用者,這將在此過程中自動將它們從 GAL 中刪除。
到目前為止,我能想到兩種可能的解決方案。
- 創建一個每小時執行一個 PS 腳本的腳本,該腳本將從 GAL 中刪除禁用的使用者。
- 使用 PS 命令同時禁用使用者並將其從 GAL 中刪除。
選項 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