博文作者:悅享人生@悅享人
除非註明,本文原創。轉載請以鏈接形式註明本文地址,謝謝。
原文鏈接:http://yxzhao.com/2013/get-members-of-nested-group/
Exchange 通訊組可以嵌套多個通訊組,但是 Exchange Management Shell 無法直接獲取嵌套組裏的成員。不過沒關係,我們可以通過簡單的構建一個函數,通過 PowerShell 來執行。
將下面的代碼保存爲 .ps1 文件,如 Get-NestedGroup.ps1,然後在 EMS 裏執行,後面跟一個參數,就是需要查詢的郵件列表名或 Alias。結果將輸出到一個 CSV 文件,文件名就是你輸入的郵件列表名或 Alias。
- param ($group)
- [array]$members = @()
- function Get-DLMemberRecurse
- {
- foreach ($varTemp in get-distributiongroupmember $args[0])
- {
- $varTemp
- if ($varTemp.RecipientType -like "Mail*Group")
- {
- $members += $varTemp
- Get-DLMemberRecurse $varTemp.Identity
- }
- }
- $members = $members | Select -Unique
- return $members
- }
- ## 設置爲全局查詢,當有多個域時必須
- Set-ADServerSettings -ViewEntireForest $true
- if (!(get-group $group))
- {
- throw "Group not found"
- }
- [array]$members = Get-DLMemberRecurse $group
- ## Select-Object 後面是輸出 CSV 文件裏的列,可以按需要增刪
- $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: 根目錄,可以在最後一行代碼裏進行更改,這個目錄必須要存在。