在PowerShell中向CSV文件添加行

a14dhokn  于 2023-09-27  发布在  Shell
关注(0)|答案(5)|浏览(140)

试图弄清楚如何添加一行到csv文件的标题。我使用以下方法获取内容:

$fileContent = Import-csv $file -header "Date", "Description"

$File返回

Date,Description
Text1,text2 
text3,text4

如何在行后面追加新的日期和说明。对不起,我是相对较新的PowerShell。感谢所有能帮忙的人

nhjlsmyf

nhjlsmyf1#

要在powershell中简单地追加到文件,可以使用add-content。
因此,要只向文件中添加新行,请尝试以下操作,其中$YourNewDate和$YourDescription包含所需的值。

$NewLine = "{0},{1}" -f $YourNewDate,$YourDescription
$NewLine | add-content -path $file

或者

"{0},{1}" -f $YourNewDate,$YourDescription | add-content -path $file

这只会将新行标记到.csv的末尾,而不会用于创建新的.csv文件,其中需要添加头文件。

gmxoilav

gmxoilav2#

创建一个新的自定义对象并将其添加到Import-Csv创建的对象数组中。

$fileContent = Import-csv $file -header "Date", "Description"
$newRow = New-Object PsObject -Property @{ Date = 'Text4' ; Description = 'Text5' }
$fileContent += $newRow
ncgqoxb0

ncgqoxb03#

我知道这是一个古老的线索,但它是我在搜索时发现的第一个。+=解决方案对我不起作用。我做的工作代码如下。

#this bit creates the CSV if it does not already exist
$headers = "Name", "Primary Type"
$psObject = New-Object psobject
foreach($header in $headers)
{
 Add-Member -InputObject $psobject -MemberType noteproperty -Name $header -Value ""
}
$psObject | Export-Csv $csvfile -NoTypeInformation

#this bit appends a new row to the CSV file
$bName = "My Name"
$bPrimaryType = "My Primary Type"
    $hash = @{
             "Name" =  $bName
             "Primary Type" = $bPrimaryType
              }

$newRow = New-Object PsObject -Property $hash
Export-Csv $csvfile -inputobject $newrow -append -Force

我可以使用这个函数循环遍历一系列数组,并将内容输入到CSV文件中。
它可以在powershell 3及以上版本中运行。

igetnqfo

igetnqfo4#

对我来说很简单是这样的:

$Time = Get-Date -Format "yyyy-MM-dd HH:mm K"
$Description = "Done on time"

"$Time,$Description"|Add-Content -Path $File # Keep no space between content variables

如果你有很多列,那么创建一个像$NewRow这样的变量:

$Time = Get-Date -Format "yyyy-MM-dd HH:mm K"
$Description = "Done on time"
$NewRow = "$Time,$Description" # No space between variables, just use comma(,).

$NewRow | Add-Content -Path $File # Keep no space between content variables

请注意文件的Set-Content(覆盖现有内容)和Add-Content(追加到现有内容)之间的差异。

ie3xauqp

ie3xauqp5#

使用$newRowToAdd | Export-Csv -Append是最简单的方法。不知道是哪个版本的

相关问题