Назад | Перейти на главную страницу

PowerShell: сведения о группе рассылки Exchange

Я хочу создать однострочник для получения примечаний определенной группы рассылки и вывести его вместе с именем и другой информацией о группе рассылки.

Я погуглил и нашел разные источники с одинаковыми решениями. Это одно из решений, которые я нашел:

https://richgski.blogspot.com/2012/03/powershell-get-exchange-distribution.html

Get-DistributionGroup Head-of-Operations | Select-Object Name, GroupType, ManagedBy, @{Name="Notes";Expression={(Get-Group $_).Notes}}

Однако строка с примечаниями всегда будет пустой, и я не знаю почему:

Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

Когда я выполняю следующую команду отдельно:

Get-Group Head-of-Ops | Select-Object Notes

... он дает мне правильную заметку в качестве вывода:

Notes
-----
Owner- Paul J.

Чуть позже я проверил, правильные ли у меня параметры, поэтому попробовал сделать это так:

$Result = Get-DistributionGroup Head-of-Operations
Get-Group $Result.Name | Select-Object Notes

Это сработало. Вывод:

Notes
-----
Owner- Paul J.

Я внес некоторые изменения в свою команду, но когда я попробую это сделать, она все еще не работает:

Get-DistributionGroup Head-of-Operations | Select-Object Name,GroupType,ManagedBy,@{Name="Notes";Expression={(Get-Group $_.Name | Select-Object Notes)}}

Вывод:

Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

После этого я нашел здесь еще одно сообщение в этой теме: https://www.oxfordsbsguy.com/2014/04/21/exchange-powershell-how-to-enumerate-distribution-lists-managers-and-members/#comment-4452

Итак, я еще раз внес некоторые изменения в команду ...

Get-DistributionGroup Head-of-Ops | Select-Object Name,GroupType,ManagedBy,@{Expression={(Get-Group $_.Name).Notes};Label="Notes"}

... все равно вообще ничего не изменилось. Вывод:

Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

Я просто не понимаю: /

Кто-нибудь из вас видит проблему и может указать мне на нее?

С уважением,

Кевин ван Тиль

p.S .: Я выполнил эту команду с параметром -verbose и думаю, что теперь я на шаг ближе к решению. Мне кажется, что в какой-то момент просто отсутствует параметр, но я не знаю, какой именно. Это Код: (я пометил конфиденциальную информацию звездочкой *)

Get-DistributionGroup Head-of-Ops@h***.com -Verbose | Select-Object Name,GroupType,ManagedBy,@{Name="Notes";Expression={(Get-Group $_.Name).Notes}} -Verbose
VERBOSE: [16:04:28.885 GMT] Get-DistributionGroup : Active Directory session settings for 'Get-DistributionGroup' are: View Entire Forest: 'False', Default Scope: 'h***.de', Configuration Domain Controller: 'H***.h***.de',
Preferred Global Catalog: '***.h***.h***.de', Preferred Domain Controllers: '{ ****.h***.h***.de, H***.h***.de }'
VERBOSE: [16:04:28.916 GMT] Get-DistributionGroup : Runspace context: Executing user: h***.de/Companies/H***/D***/User/IT Service/****, Executing user organization: , Current organization: , RBAC-enabled: Enabled.
VERBOSE: [16:04:28.916 GMT] Get-DistributionGroup : Beginning processing &
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Current ScopeSet is: { Recipient Read Scope: {{, }}, Recipient Write Scopes: {{, }}, Configuration Read Scope: {{, }}, Configuration Write Scope(s): {{, }, }, Exclusive Recipient
Scope(s): {}, Exclusive Configuration Scope(s): {} }
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Resolved current organization: .
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Searching objects "Head-of-Ops@h***.com" of type "ADGroup" under the root "$null".
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Previous operation run on domain controller 'H***.h***.de'.
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Previous operation run on domain controller 'H***.h***.de'.
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Preparing to output objects. The maximum size of the result set is "1000".

VERBOSE: [16:04:28.947 GMT] Get-DistributionGroup : Ending processing &
Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

В следующей строке, я думаю, зарыта проблема:

VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Searching objects "Head-of-Ops@h***.com" of type "ADGroup" under the root "$null".

Кто-нибудь знает, чего не хватает и почему?

Какую версию Exchange вы используете?

Я тестировал "Get-DistributionGroup "group@domain.com" | Select-Object Name, GroupType, ManagedBy, @{Name="Notes";Expression={(Get-Group $_).Notes}} | ft -AutoSize«И это сработало как в моей лаборатории Exchange 2010, так и в 2013 году.

По вашему описанию также странно, что атрибут ManagedBy имеет значение null. Я не уверен, как вы создаете эту DG, но я думаю, вы можете попробовать это с новой тестовой DG, если сценарий работает, то я думаю, вы можете просмотреть конфигурацию этой DG или просто перестроить ее.

При создании вычисляемого свойства с Select-Object тебе нужно

  1. Выражение, может сокращаться до E / e
  2. имя ИЛИ Метка, они являются синонимами и также могут быть сокращены до 1-й буквы.

Из вашего вопроса неясно, если Get-DistributionGroup Head-of-Operations возвращает один или несколько объектов?

Также является Head-of-Operations такой же как Head-of-Ops ?

Альтернативный способ добавления свойств через Select-Object - создать [PSCustomObject]

foreach($HeadOP in Get-DistributionGroup Head-of-Operations){
    [PSCustomObject]@{
        Name      = $HeadOp.Name
        GroupType = $HeadOp.GroupType
        ManagedBy = $HeadOp.ManagedBy
        Notes     = (Get-Group $HeadOp.Name | Select-Object Notes)
    }
}

В конце концов вам нужно -ExpandProperty Notes

        Notes     = (Get-Group $HeadOp.Name | Select-Object -ExpandProperty Notes)

или короче

        Notes     = (Get-Group $HeadOp.Name).Notes