【问题标题】:Failure to compare values when I am reading from CSV file从 CSV 文件读取时无法比较值
【发布时间】:2017-01-24 03:10:34
【问题描述】:

我的 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 文件看起来像

网站
/站点/测试站点
/sites/testsite1234
...

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

网站
/站点/测试站点
/sites/testsite1234
...

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

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

【问题讨论】:

    标签: excel powershell csv sharepoint


    【解决方案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"
        }
    }
    

    【讨论】:

    • 谢谢@Ansgar ,我在查看了 csv 结构后得出了相同的结论。我喜欢你关于 contains 的建议,这将大大简化我的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多