在从CSV文件读取时无法比较值

我的PowerShell脚本如下,我已经使用Export-Csv命令Export-Csv农场中的所有网站保存为CSV文件。

 $farmList = Import-Csv "TestFarm.csv" $farmList1 = Import-Csv "OtherFarm1.csv" foreach ($site in $farmList) { Write-Host "db - ", $site foreach ($farmsite in $farmList1) { if ($site -eq $farmsite) { Write-Host "matching site found for ", $farmsite break } Write-Host "farm - ", $farmsite } } 

我的Excel中的CSV文件看起来像

 现场
 /网站/testing网站
 /网站/ testsite1234
 ... 

CSV中的第二个Excel文件看起来像

 现场
 /网站/testing网站
 /网站/ testsite1234
 ... 

当我debugging程序时,我得到$site$farmSite的值作为@{Site=/sites/TestSite} ,但是当我使用-eq比较值时,值不匹配。

我也尝试使用Compare-Object没有成功。

您需要比较对象的Site属性,而不是对象本身。

改变这个:

 if ($site -eq $farmsite) { 

进入这个:

 if ($site.Site -eq $farmsite.Site) { 

如果这些文件只包含这一个属性,您还可以在导入时展开它:

 $farmList = Import-Csv "TestFarm.csv" | Select-Object -Expand Site $farmList1 = Import-Csv "OtherFarm1.csv" | Select-Object -Expand Site 

后者还允许你通过使用一个-contains检查来简化你的代码:

 foreach ($farmsite in $farmList1) { if ($farmList -contains $farmsite) { Write-Host "matching site found for $farmsite" } }