如何在 Exchange 中獲取嵌套組的所有成員

博文作者:悅享人生@悅享人
除非註明,本文原創。轉載請以鏈接形式註明本文地址,謝謝。
原文鏈接:http://yxzhao.com/2013/get-members-of-nested-group/

Exchange 通訊組可以嵌套多個通訊組,但是 Exchange Management Shell 無法直接獲取嵌套組裏的成員。不過沒關係,我們可以通過簡單的構建一個函數,通過 PowerShell 來執行。

將下面的代碼保存爲 .ps1 文件,如 Get-NestedGroup.ps1,然後在 EMS 裏執行,後面跟一個參數,就是需要查詢的郵件列表名或 Alias。結果將輸出到一個 CSV 文件,文件名就是你輸入的郵件列表名或 Alias。

 
  1. param ($group
  2. [array]$members = @() 
  3. function Get-DLMemberRecurse 
  4.     foreach ($varTemp in get-distributiongroupmember $args[0]) 
  5.     { 
  6.         $varTemp 
  7.         if ($varTemp.RecipientType -like "Mail*Group")  
  8.             {  
  9.                 $members += $varTemp 
  10.                 Get-DLMemberRecurse $varTemp.Identity 
  11.             } 
  12.     } 
  13.     $members = $members | Select -Unique 
  14.     return $members 
  15. ## 設置爲全局查詢,當有多個域時必須 
  16. Set-ADServerSettings -ViewEntireForest $true 
  17. if (!(get-group $group)) 
  18.     throw "Group not found" 
  19. [array]$members = Get-DLMemberRecurse $group 
  20. ## Select-Object 後面是輸出 CSV 文件裏的列,可以按需要增刪 
  21. $members = $members | where-Object {($_.RecipientType -eq "UserMailbox") -Or ($_.RecipientType -eq "MailContact")} | Select -Unique | Select-Object Alias,DisplayName,PrimarySmtpAddress,UserPrincipalName | Export-csv -encoding utf8 -Path "D:\$group.csv" 
 

執行方式如下:

1
[PS] C:\Windows\system32>D:\Get-NestedGroup.ps1 MyGroup

注意:輸出的 CSV 文件是默認在 D: 根目錄,可以在最後一行代碼裏進行更改,這個目錄必須要存在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章