比较对象不会返回正确的值

时间:2014-08-27 22:09:26

标签: powershell

我在两个列表上运行比较对象。 $distros列表包含名称为 MDM 的对象,$adgroups列表中没有具有该名称的对象。

为什么比较对象不返回名为MDM且< = side指示符的输入对象?

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

Name                           DisplayName                    GroupType                      PrimarySmtpAddress            
----                           -----------                    ---------                      ------------------            
MDM                            MDM                            Universal                      MDM@contoso.com  

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工作。感谢Matt的评论。

1 个答案:

答案 0 :(得分:2)

你应该试试这个

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

-expandproperty name将返回name s的字符串数组,而不是具有name属性的对象数组。显然Compare-Object将适用于复杂对象,但扩展$distros名称和$adgroups名称可使输出更清晰。

你也可以尝试这样的东西,这更简洁!

Compare-Object $distros $adgroups -property Name