2014-08-27 24 views
1

我在兩個列表上運行比較對象。 $distros列表包含名稱爲MDM的對象,而$adgroups列表中沒有包含該名稱的對象。比較對象不會返回正確值

爲什麼比較對象不返回名稱爲MDM和< =側指示符的輸入對象?

PS C:\Users\ME> $distros | ?{$_.name -like "*MDM*"} 

Name       DisplayName     GroupType      PrimarySmtpAddress    
----       -----------     ---------      ------------------    
MDM       MDM       Universal      [email protected] 

PS C:\Users\ME> $adgroups | ?{$_.name -like "*MDM*"} 

PS C:\Users\ME> Compare-Object ($distros | select name) ($adgroups | select Name) 

InputObject             SideIndicator             
-----------             -------------             
@{Name=UAD}             <=               
@{Name=UAT Funders}           <=               
@{Name=Underwriting Managers}         <=   

使用Compare-Object ($distros | select -expandproperty Name) ($adgroups | select -expandproperty Name工作。感謝馬特的評論。

+2

也許是這樣的'比較-對象($發行版|選擇-ExpandProperty名)($廣告組|選擇-ExpandProperty名稱)' – Matt 2014-08-27 22:29:58

+1

同時,我們也看不出'$ distros'或'$ adgroups'被創建。對於我們所知的'$ adgroups'沒有名稱屬性 – Matt 2014-08-27 22:33:55

回答

2

你應該試試這個代替

Compare-Object ($distros | select -expandproperty name) ($adgroups | select -expandproperty Name) 

-expandproperty name將剛剛返回name個字符串數組,而不是與名稱屬性的對象數組。很明顯,Compare-Object可以處理複雜的對象,但擴展$distros名稱和$adgroups名稱可以使輸出更清晰。

你也可以嘗試這樣的事情,這更簡潔!

Compare-Object $distros $adgroups -property Name