Как получить список всех списков рассылки и их участников в Exchange 2007?
Я хочу получить список всех списков рассылки в Exchange вместе с их участниками? Возможно ли это с помощью каких-либо встроенных инструментов Exchange? Powershell? Сторонние инструменты?
3 ответа
Группы рассылки хранятся в Active Directory. Этот сценарий Powershell перечислит все группы рассылки в домене AD и их участников. Если вы действительно храните их как группы безопасности, удалите "(|(groupType=2)(groupType=4)(groupType=8))".
$strFilter = "(&(objectCategory=Group)(|(groupType=2)(groupType=4)(groupType=8)))"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
$objSearcher.PropertiesToLoad.Add("cn") | Out-Null
$objSearcher.PropertiesToLoad.Add("member") | Out-Null
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
Write-Output $objItem.cn
foreach ($objMember in $objItem.member) {
Write-Output " $objMember"
}
}
Я принял ответ Тораи, так как он использовался, но я немного изменил внешний вид foreach, чтобы он выводил список рассылки в той же строке, что и данные пользователя:
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
foreach ($objMember in $objItem.member) {
Write-Output "$($objItem.cn),$($objMember)"
}
}
Или, если вы предпочитаете использовать Powershell, поставляемый с Exchange, вот альтернативный скрипт. Это будет
# dump all DLs to a variable, whether DistributionList or mail-enabled Sec-group
$DLList = get-distributiongroup
# Iterate over each DL to get member-list
foreach ($DL in $DLList) {
# Get the member list
$Dmember=get-distributiongroupmember $DL
# Get DL name
$Dname=$DL.name
# Start outputting
write-output "`q$Dname`q" -nonewline
# Iterate over member list, outputting
foreach ($Member in $Dmember) {
$MName=$Member.DisplayName
write-output ",`q$MName`q" -nonewline
}
# Add terminal line-feed
write-output "`n"
}
Это должно привести к выводу, который выглядит следующим образом:
"Accounting","Mary Joe","Fred Smith"
"Receiving Office"
"Office, home","John Birtram"
Adust однако вам нужно.
Этот сценарий в значительной степени исходил из моей головы и, вероятно, содержит ошибки.