【问题标题】:powershell write in csvpowershell 在 csv 中写入
【发布时间】:2021-12-10 18:30:30
【问题描述】:

有什么方法可以在 csv 文件的最后一列中写入文本?没有“”

if ($inputID -eq $entry.HostName){

    "$inputID Ok!"
}
else{

    "$inputID doesn't exist in database!"

    $title    = 'Collector _ HostName'
    $question = 'Add new ID in csv database?'
    $choices  = '&Yes', '&No'

$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
    if ($decision -eq 0) {
    Write-Host 'confirmed'

    $ID = Read-Host -Prompt "TypeID"
    $IP = Read-Host -Prompt "TypeIP"

$wrapper = New-Object PSObject -Property @{ HostName = $ID; IP = $IP }
Export-Csv -Append -InputObject $wrapper -Path ".\test.csv" -NoTypeInformation -Force 
$dbTrimmer = Get-Content -Path ".\test.csv"
$dbTrimmer.Replace('","',",").TrimStart('"').TrimEnd('"') | Out-File ".\test.csv" -Force -Confirm:$false
    Exit
    }
    else{
    Write-Host 'No'
    Exit
    }
}

csv 是这样的

ID,IP
ABC,10.10.10.10

此时我的脚本可以在 csv 中写入,但会删除 csv 中的旧信息

"FirstColumn","SecondColumn"
"ABCD","10.10.10.10"

谢谢

【问题讨论】:

标签: database powershell csv


【解决方案1】:

如果您需要向现有 CSV 文件添加新行,请使用 -Append 开关 Export-Csv

至于您希望在值和标题周围不带引号的情况下编写文件,那么请记住,简单地尝试删除 CSV 文件中的所有引号可能会导致字段顺序错位并使 csv 无法使用。

如果您使用的是 PowerShell 版本 7.x,您还可以添加参数 -UseQuotes AsNeeded

对于较旧的 PowerShell 版本,这是不可用的,但有一种安全的方法可以做到这一点,请参阅我的函数 ConvertTo-CsvNoQuotes

【讨论】:

  • 我想尝试删除引号,看看发生了什么。有可能吗?
  • @Bogdan 当然,但是如果您的任何字段碰巧包含逗号(分隔符)或换行符,您将破坏您的 csv。这就是为什么我写了警告并给了你一个链接来正确地做到这一点
  • 已解决,我更新了我的第一篇文章。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 2013-10-30
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多