2013-06-01 34 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

想法是讓這個命令返回一些通訊組屬性和通訊組的成員無需額外的管道內襯 第一命令返回通訊組 –