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

Powershell-读取、创建和操作csv文件,powershell,csv,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

我试图写一个脚本,将创建和维护一个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
        }
    }
}
txt文件只是一个包含IP地址的文本文件,每个IP地址位于一个新行中

脚本会运行,但是导出csv方法会给我留下一个.csv文件,如下所示:

“计数”、“长度”、“长长度”、“秩”、“同步根”、“IsReadOnly”、“IsFixedSize”、“IsSynchronized” “0”、“0”、“0”、“1”、“System.Object[]”、“False”、“True”、“False”

和我想象的不太一样

另外,在结尾处,我希望$db对象如下所示:

相反,我得到的东西一点也不像桌子:


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

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

替换

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


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

替换

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


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

替换

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


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

替换

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


这就是整个剧本吗?我看到一个对$csv的引用,如果没有在其他地方填充,它将是空的。谢谢。现在已修复,但问题仍然存在,我的问题仍然存在。至于
$db
的输出是什么样子的,那只是列表视图还是表视图。除了您在控制台中看到它之外,它不会影响任何东西。这就是整个脚本吗?我看到一个对$csv的引用,如果没有在其他地方填充,它将是空的。谢谢。现在已修复,但问题仍然存在,我的问题仍然存在。至于
$db
的输出是什么样子的,那只是列表视图还是表视图。除了您在控制台中看到它之外,它不会影响任何东西。这就是整个脚本吗?我看到一个对$csv的引用,如果没有在其他地方填充,它将是空的。谢谢。现在已修复,但问题仍然存在,我的问题仍然存在。至于
$db
的输出是什么样子的,那只是列表视图还是表视图。除了您在控制台中看到它之外,它不会影响任何东西。这就是整个脚本吗?我看到一个对$csv的引用,如果没有在其他地方填充,它将是空的。谢谢。现在已修复,但问题仍然存在,我的问题仍然存在。至于
$db
的输出是什么样子的,那只是列表视图还是表视图。除了您在控制台中看到它之外,它不会影响其他任何东西。