Powershell - 读取,创建和操作csv文件

时间:2014-07-19 13:11:38

标签: powershell csv

我正在尝试编写一个可以创建和维护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文件:

  

"计数""长度"" LongLength""秩"" SyncRoot上"&# 34; IsReadOnly"" IsFixedSize"" IsSynchronized"   " 0"" 0"" 0"" 1"" System.Object的[]&#34 ;, "假""真""假"

不是我想象的那样。

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

相反,我得到的东西看起来并不像一张桌子:

result that i get

有人可以告诉我,我做错了,我希望的结果与我实际运行脚本后得到的结果有什么区别?

1 个答案:

答案 0 :(得分:2)

您正尝试将阵列本身(-InputObject $db)导出为CSV。这就是为什么你得到数组的属性(计数等)。

替换

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

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