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

时间:2016-09-16 00:25:04

标签: excel powershell csv sharepoint

我的PowerShell脚本如下,我使用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
    }
}   

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

Site
/sites/TestSite
/sites/testsite1234
...

CSV中的第二个Excel文件类似于

Site
/sites/TestSite
/sites/testsite1234
...

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

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

1 个答案:

答案 0 :(得分:1)

您需要比较对象' 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"
    }
}