2013-02-24 112 views
2

我有以下代碼。如何將$f轉換爲數組,以便它可以與數組進行比較?支撐@(...)不起作用。將選擇結果轉換爲數組

當比較$l$f時,我得到了以下結果。

PS C:\Users\nick> compare $l $f 

InputObject             SideIndicator 
-----------             ------------- 
@{Name=A}             => 
@{Name=B}             => 
@{Name=X}             => 
A               <= 
B               <= 
X               <= 
Y               <= 

回答

5

更換select Nameselect -Expand NameForEach-Object { $_.Name }

0

您可以將兩個對象都投射到ArrayLists然後進行比較。

[System.Collections.ArrayList]$array1 = $l 
[System.Collections.ArrayList]$array2 = $f 
+0

我比較$陣列1和$時,得到了相同的結果數組2。 – ca9163d9 2013-02-24 11:10:51

0

試試這個:

$a = New-Object System.Collections.ArrayList; 
$f | % { $null = $a.Add($_.Name); } 
compare $l $a; 
1

另一種方法,如果你正在尋找擺脫單一屬性的陣列將使用「ExpandProperty」開關從Select這樣的:

$f = cat myFile | ConvertFrom-Csv | gm -MemberType NoteProperty | Select -ExpandProperty Name