2013-06-01 33 views
0

能否请您指教,为什么这项工作:PowerShell的 - 调用属性里面表达

Get-DistributionGroup -Filter {DisplayName -like "*Name*"} | 
    fl Displayname, PrimarySMTPAddress, @{Label = "Members"; expression = { 
    Get-DistributionGroupMember $_.Identity | 
     select -ExpandProperty PrimarySmtpAddress 
    }} 

并且不:

Get-DistributionGroup -Filter {DisplayName -like "*Name*"} | 
    fl Displayname, PrimarySMTPAddress, @{Label = "Members"; expression = { 
    (Get-DistributionGroupMember $_.Identity).PrimarySmtpAddress 
    }} 

回答

0

这取决于你有多少成员取回(如果结果是一个对象长第二个命令将工作)。

第一个命令管道的结果来选择对象而膨胀所有组成员(成员集合被展开,并且每个部件是管道输送到选择对象时,一次一个)。

第二条命令获取会员的收集和被要求显示集合本身,不是每个成员的地址,这会导致什么的主地址导致收集不具有PrimarySmtpAddress财产。

,使你需要管的foreach对象第一第二个命令工作:

... @{Label = "Members"; expression = {(Get-DistributionGroupMember $_.Identity | Foreach-Object {$_.PrimarySmtpAddress}} 
+0

的所有成员得到它!非常感谢。 –

+0

不客气。考虑将它标记为答案,以便它回答你的问题。 –

0

这是最好的,如果你不是详细介绍这个问题“不起作用“ - 如果有错误消息,请说明。如果你得到了意想不到的结果,请描述你的期望和你得到的结果。

Get-DistributionGroupMember $_.Identity | select -ExpandProperty PrimarySmtpAddress返回一个字符串。

(Get-DistributionGroupMember $_.Identity).PrimarySmtpAddress返回一个对象。

+0

想法是让这个命令返回一些通讯组属性和通讯组的成员无需额外的管道内衬 第一命令返回通讯组 –