5

我有以下代码。

$l = @("A", "B", "X", "Y")
echo "A,B,X`n1,2,3,4" > .\myFile # Create test file

$f = cat myFile | ConvertFrom-Csv | gm -MemberType NoteProperty | select Name
compare $l $f

$a = .... # convert $f to array
compare $l $a

如何将$f数组转换为可以与数组进行比较?支撑@(...)不起作用。

$l比较和时得到以下结果$f

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

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

4 回答 4

8

替换select Nameselect -Expand NameForEach-Object { $_.Name }

于 2013-02-24T12:29:39.227 回答
1

另一种方法,如果您希望从单个属性中获取数组,则可以使用“ExpandProperty”开关,Select如下所示:

$f = cat myFile | ConvertFrom-Csv | gm -MemberType NoteProperty | Select -ExpandProperty Name
于 2013-02-25T03:00:31.270 回答
0

您可以将两个对象都转换为 ArrayLists,然后进行比较。

[System.Collections.ArrayList]$array1 = $l
[System.Collections.ArrayList]$array2 = $f
于 2013-02-24T09:21:46.883 回答
0

试试这个:

$a = New-Object System.Collections.ArrayList;
$f | % { $null = $a.Add($_.Name); }
compare $l $a;
于 2013-02-24T12:04:13.327 回答