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 Nameに置き換えます。select -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 に答える