我有以下代码。
$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 <=
答案 0 :(得分:5)
将select Name
替换为select -Expand Name
或ForEach-Object { $_.Name }
。
答案 1 :(得分:1)
另一种方法,如果您希望从单个属性获取数组,则可以使用Select
中的“ExpandProperty”开关,如下所示:
$f = cat myFile | ConvertFrom-Csv | gm -MemberType NoteProperty | Select -ExpandProperty Name
答案 2 :(得分:0)
您可以将两个对象都转换为ArrayLists然后进行比较。
[System.Collections.ArrayList]$array1 = $l
[System.Collections.ArrayList]$array2 = $f
答案 3 :(得分:0)
试试这个:
$a = New-Object System.Collections.ArrayList;
$f | % { $null = $a.Add($_.Name); }
compare $l $a;