在从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" } }