Powershell array .contains 方法似乎没有像宣传的那样工作

Powershell array .contains method doesn't seem to work as advertised

PS C:\TEMP> cat list.csv
132
456
789

PS C:\TEMP> $arrayfromcsv = Import-CSV -header Values -path "c:\TEMP\list.csv"

PS C:\TEMP> $arrayfromcsv.Length
3

PS C:\TEMP> $arrayfromcsv[2]
Values
------
789

PS C:\TEMP> $arrayfromcsv.Contains("789")
False

请告诉我这里出了什么问题...我怀疑我错过了一些明显的东西,这表明我对 Powershell 不熟悉...

问题是在对象数组上使用 .Contains$arrayfromcsv 而不是 扩展每个对象的值 $arrayfromcsv.Values)。

您可以使用 Member-Access Enumeration 访问 $arrayfromcsv 的每个对象的所有 属性 值:

@'
132
456
789
'@ | ConvertFrom-Csv -Header Values | Set-Variable csv

$csv.Values.Contains('789') # => True