【发布时间】: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