Shunze 學園 >電腦資訊學系 >Exchange 2010 > 《分享》Powershell啟用OU中的使用者及群組mail功能 哈囉,還沒有註冊或者登入。請你[註冊|登入]
« 上一篇主題 下一篇主題 » 顯示成列印模式 | 增加到我的最愛
發表新主題 發表回覆
作者
主題
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2324

shunze 離線
《分享》Powershell啟用OU中的使用者及群組mail功能引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

操作環境
網域:test.com.tw
Domain Controller:test-AD.test.com.tw
Exchange Server:Mail-Exchg2010.test.com.tw
Exchange Mail Database:testmailbox
OU:Test-OU
使用者帳號:ShunzeA (mail已啟用) ShunzeB (帳號停用) ShunzeC (mail未啟用)
群組帳號:ShunzeGP1 (mail已啟用) ShunzeGP2 (mail未啟用)




處理邏輯

  1. 透過ADSI取得OU物件,逐一判斷OU物件中的子物件為使用者或群組,再分別處理。
  2. 若子物件為使用者,依帳號啟用與否及mail功能啟用與否,進行對應處理。
  3. 若子物件為群組,依群組mail功能啟用與否,進行對應處理。
  4. 為避免群組中文名稱影響email address之建立,透過互動輸入,讓操作者輸入群組的Alias,做為email建立依據。
  5. 若暫時不想為群組建立mail功能,可直接於輸入內容按下enter,略過mail建立功能。


Script
$member=[ADSI]"LDAP://test-AD/OU=Test-OU,DC=test,DC=com,DC=tw"

# 使用者帳號啟用與否的數值陣列
$EnableNum ={512,544,66048,66080,262656,262688,328192,328224}
$DisableNum={514,546,66050,66082,262658,262690,328194,328226}

foreach ($item in $member.psbase.children) {
    if ($item.psbase.schemaclassname -eq "user") {
        # 物件為 user 處理邏輯
        $user=$item.name
        $value= $item.useraccountcontrol
        $homeMDB=$item.homeMDB
        if ("$DisableNum".contains( $value )) {
            Write-Host "Account '$user' disabled"
        } elseif ( "$EnableNum".contains( $value )) {
            if ($homeMDB) {
                Write-Host "Acount '$user' mailbox exist!"
                Write-Host $homeMDB
            } else {    
                Write-Host "Enable $user MailBox..."
                Enable-Mailbox -Identity test\$user -Alias $user -Database "testmailbox" -DomainController "test-AD.test.com.tw" -Confirm
            }
        } else {
            Write-Host "Other Type account, useraccountcontrol value $value ."
        }
    } elseif ($item.psbase.schemaclassname -eq "group") {
        # 物件為 group 處理邏輯
        $group=$item.name
        $legacyExchangeDN=$item.legacyExchangeDN
        if ($legacyExchangeDN) {
            Write-Host "Group '$group' mailbox exist!"
            Write-Host $legacyExchangeDN
        } else {
            $alias = Read-Host "Please input the email address alias for GROUP $group"
            if ($alias) {
                Enable-DistributionGroup -Identity test\$group -Alias $alias -DomainController "test-AD.test.com.tw" -Confirm
            } else {
                Write-Host "Failed to create group '$group' mailbox..."
            }
        }
    }
    Write-Host
}


指令碼簡單說明如下
  • $member=[ADSI]“LDAP://test-AD/OU=Test-OU,DC=test,DC=com,DC=tw" 透過ADSI來取得test-AD.test.com.tw網域堛摟U物件Test-OU集合。
  • $member.psbase.children 取得OU下的子物件,諸如使用者,群組,聯絡人...等。
  • useraccountcontrol、homeMDB 藉由這兩個使用者物件屬性來判斷使用者帳號的啟用狀態與mail功能。未建立mail,homeMDB值為null。
  • legacyExchangeDN 藉由此屬性來判斷群組mail功能是否啟用。未啟用為null值。
  • -Alias 群組email address組合自Alias+網域。透過輸入功能,讓操作員輸入群組的Alias;不輸入,停止建立群組email。


將script儲存為副檔名ps1的檔案後,執行此script畫面擷圖如下:



UserAccountControl Value參考資料
Active Directory UserAccountControl Value



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2014-01-27, 00:25 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
  « 上一篇主題 下一篇主題 »
發表新主題 發表回覆
跳到:

Powered by: Burning Board 1.1.1 2001 WoltLab GbR