Автор Тема: [РЕШЕНО] Скрипт выводящий список членов всех групп  (Прочитано 7495 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
Нужно вывести список членов всех групп рассылки Exchange 2010.

В голову приходит только
$Group = Get-DistributionGroup | sort DisplayName | ft DisplayName, PrimarySmtpAddress
Get-DistributionGroupMember -identity $Group |sort name | ft name, primarysmtpaddress
Но что то не выходит, может подскажете что нибудь.
« Последнее редактирование: 17 мая 2013, 13:23:03 от Stierlitz »

Оффлайн Triangle

  • Модераторы
  • Олдфаг
  • *****
  • Сообщений: 7128
  • Рейтинг: 48
  • Пол: Мужской
  • Откуда: замкадыш
Get-DistributionGroupMember –identity <YourGroup> | ft name, primarysmtpaddress | Export-CSV c:\members.csv

Ха, выводит но хрень какую то...
« Последнее редактирование: 15 мая 2013, 14:33:51 от Triangle »
Тетрис научил нас жизненно важному пониманию, успехи исчезают, ошибки накапливаются.

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
<YourGroup> - вот вместо этого надо поставить все группы какие найдёт, а как это сделать не знаю.

Оффлайн shs

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4401
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
exchang'а нет, справку не читал, но всей видимости как-то так:

Get-DistributionGroup | Get-DistributionGroupMember | sort name| ft name, primarysmtpaddress

или

Get-DistributionGroup | %{Get-DistributionGroupMember –identity $_} | sort name| ft name, primarysmtpaddress

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
exchang'а нет, справку не читал, но всей видимости как-то так:

Get-DistributionGroup | Get-DistributionGroupMember | sort name| ft name, primarysmtpaddress

или

Get-DistributionGroup | %{Get-DistributionGroupMember –identity $_} | sort name| ft name, primarysmtpaddress

Первый вариант сразу попробовал, по аналогии с почтовыми ящиками, тоже думал будет работать. Но почему то выдаёт вообще всё в куче, и группы и членов, при чём всех перечисляет раз по 10.
Второй вариант не работает -
Pipeline not executed because a pipeline is already executing. Pipelines cannot be executed concurrently.
    + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [], PSInvalidOperationException
    + FullyQualifiedErrorId : RemotePipelineExecutionFailed

Оффлайн shs

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4401
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
Попробуйте так:
$DGroups= Get-DistributionGroup
$Members = $DGroups|%{Get-DistributionGroupMember –identity $_.identity}
$Members| sort name| ft name, primarysmtpaddress

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
Get-DistributionGroup | Get-DistributionGroupMember | sort name| ft name, primarysmtpaddress
Тоже самое что Get-DistributionGroup | Get-DistributionGroupMember | sort name| ft name, primarysmtpaddress

Оффлайн shs

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4401
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
Get-DistributionGroup | Get-DistributionGroupMember | sort name| ft name, primarysmtpaddress
Тоже самое что Get-DistributionGroup | Get-DistributionGroupMember | sort name| ft name, primarysmtpaddress
что "тоже самое"?

Оффлайн Triangle

  • Модераторы
  • Олдфаг
  • *****
  • Сообщений: 7128
  • Рейтинг: 48
  • Пол: Мужской
  • Откуда: замкадыш
Что то тоже не то :(

Name                                                        PrimarySmtpAddress
----                                                        ------------------
testuser
А****а Евгения                                             ay*@prin.ru
А****а Евгения                                             ay*@prin.ru
Ба*****ов Илья                                             bi*@prin.ru
Ба*****ов Илья                                             bi*@prin.ru
Ба*****ов Илья                                             bi*@prin.ru
Ба*****ов Илья                                             bi*@prin.ru
Ба*****ов Илья                                             bi*@prin.ru
Ба*****ов Илья                                             bi*@prin.ru


И так вывело всех, каждого по столько раз в скольких группах участвует.
Тетрис научил нас жизненно важному пониманию, успехи исчезают, ошибки накапливаются.

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
Я через php пытался вывести, но там получается показать только одного рандомного участника  :D

Оффлайн shs

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4401
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
И так вывело всех, каждого по столько раз в скольких группах участвует
Ну, так сгруппируйте вывод по одному из полей, по имени или имэйлу, для группировки целый командлет имеется  ;)

Оффлайн shuster

  • Постоялец
  • ***
  • Сообщений: 121
  • Рейтинг: 12
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Новосибирск
Цитировать
$dist = foreach ($group in (Get-DistributionGroup -Filter {name -like "*"})) {Get-DistributionGroupMember $group | Select @{Label="Group";Expression={$Group.Name}},@{Label="User";Expression={$_.Name}},SamAccountName,PrimarySmtpAddress}
$dist | Sort Group,User
А вот красиво:
Цитировать
$saveto = "C:\\listmembers.txt"

Get-DistributionGroup | sort name | ForEach-Object {

   "`r`n$($_.Name)`r`n=============" | Add-Content $saveto
   Get-DistributionGroupMember $_ | sort Name | ForEach-Object {
      If($_.RecipientType -eq "UserMailbox")
         {
            $_.Name + " (" + $_.PrimarySMTPAddress + ")" | Add-Content $saveto
         }
   }
}
Ось не глючит! Она, сцуко, работает, все остальное нет...

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
shuster, а ты вообще пробовал сначала эти скрипты выполнить у себя, или ты и так уверен что будет работать?

Ни работает нифига, первый выводит опять же всё в куче, второй вообще пустой файл создаёт.

Оффлайн shuster

  • Постоялец
  • ***
  • Сообщений: 121
  • Рейтинг: 12
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Новосибирск
shuster, а ты вообще пробовал сначала эти скрипты выполнить у себя, или ты и так уверен что будет работать?

Ни работает нифига, первый выводит опять же всё в куче, второй вообще пустой файл создаёт.
Exchange 2010 SP3 - оба работают.
C:\listmembers.txt - измени на путь, куда заведомо есть права на запись.
Ну или попробуйте без вывод в файл:
Цитировать
Get-DistributionGroup | sort name | ForEach-Object {

   "`r`n$($_.Name)`r`n============="
   Get-DistributionGroupMember $_ | sort Name | ForEach-Object {
      If($_.RecipientType -eq "UserMailbox")
         {
            $_.Name + " (" + $_.PrimarySMTPAddress + ")"
         }
   }
}
« Последнее редактирование: 17 мая 2013, 13:01:52 от shuster »
Ось не глючит! Она, сцуко, работает, все остальное нет...

Оффлайн Stierlitz

  • Постоялец
  • ***
  • Сообщений: 193
  • Рейтинг: 1
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: От туда
тоже Ex 2010 SP3, первый всё таки не работает.

Последний что ты написал сработал, спасибо. Как раз то что нужно.