Я хочу создать однострочник для получения примечаний определенной группы рассылки и вывести его вместе с именем и другой информацией о группе рассылки.
Я погуглил и нашел разные источники с одинаковыми решениями. Это одно из решений, которые я нашел:
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
тебе нужно
Из вашего вопроса неясно, если 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