我正在尝试编写一个可以创建和维护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对象看起来像这样:
相反,我得到的东西看起来并不像一张桌子:
有人可以告诉我,我做错了,我希望的结果与我实际运行脚本后得到的结果有什么区别?
答案 0 :(得分:2)
您正尝试将阵列本身(-InputObject $db
)导出为CSV。这就是为什么你得到数组的属性(计数等)。
替换
Export-Csv -InputObject $db -Path $dbLocation -NoTypeInformation
与
$db | Export-Csv -Path $dbLocation -NoTypeInformation