【问题标题】:Powershell - reading, creating and manipulating a csv filePowershell - 读取、创建和操作 csv 文件
【发布时间】:2014-07-19 13:11:37
【问题描述】:

我正在尝试编写一个脚本来创建和维护一个 csv 电子表格。它会按计划运行,如果没有找到任何 .csv 文件,它应该从头开始创建它。

这就是我的做法:

# === Paths
$ipsFileLocation = "C:\stuff\ips.txt"
$dbLocation = "C:\stuff\db.csv"

# === Actual script starts here

Write-Host "Importing the CSV File..."
Try 
{ 
    $db = Import-Csv $dbLocation
} 
Catch [System.IO.FileNotFoundException] 
{ 
    Write-Host "The database file is not found! Creating a new one..."
    $db = @()
}

$ipList = get-content $ipsFileLocation

Update-Ips $db $ipList

Export-Csv -InputObject $db -Path $dbLocation -NoTypeInformation

# === Helper methods
function Update-Ips($db, $ips) 
{
    foreach ($ip in $ips)
    {   
        $foundRow = $db | Where { $_.IP -eq $ip } #check if the particular ip exists in database
        if ($foundRow -eq $null)
        {
            #no ip found in database -> Create new entry
            $newRecord = "" | select IP,Host,Responds,LastLogon
            $newRecord.IP = $ip
            $db += $newRecord
        }
    }
}

ips.txt 文件只是一个包含 IP 地址的文本文件,每个都在一个新行中。

脚本运行,但是 export-csv 方法给我留下了一个如下所示的 .csv 文件:

"Count","Length","LongLength","Rank","SyncRoot","IsReadOnly","IsFixedSize","IsSynchronized" "0","0","0","1","System.Object[]","False","True","False"

和我想象的不太一样。

另外,最后我希望 $db 对象看起来像这样:

相反,我得到的东西根本不像一张桌子:

有人能告诉我我做错了吗?我想要的结果和我运行脚本实际得到的结果有什么区别?

【问题讨论】:

  • 这是整个脚本吗?我看到一个对 $csv 的引用,如果没有在其他地方填充,它将是空的
  • 很好,马特,谢谢。现在已修复,但问题仍然存在,我的问题仍然存在。
  • $db 的输出而言,这只是列表视图和表格视图。除了您在控制台中的查看方式之外,它不会影响任何其他内容。

标签: powershell csv


【解决方案1】:

您正在尝试将数组本身 (-InputObject $db) 导出到 CSV。这就是您获取数组属性(计数等)的原因。

替换

Export-Csv -InputObject $db -Path $dbLocation -NoTypeInformation

$db | Export-Csv -Path $dbLocation -NoTypeInformation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2017-04-13
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多