如何使用PowerShell将数据添加到CSV的最后一列?

如何使用PowerShell将数据添加到CSV的最后一列?,powershell,command-line,command-line-interface,Powershell,Command Line,Command Line Interface,我需要将数据添加到CSV文件的最后一列。我拥有的测试文件如下所示: NAME,AGE,OFFICE,DEPT,SKILL jack,24,IBM,Retail tom,32,MS,BFSI SAM,44,MGR,Test 姓名、年龄、办公室、部门、技能 杰克,24岁,IBM,零售业 汤姆,32岁,博士后 山姆,44岁,考试经理 我已经设法解析了CSV,但是在最后一列“SKILL”中添加数据是很困难的。要求是在每行的最后一列中添加单词“Java” NAME,AGE,OFFICE,DEPT,SKIL

我需要将数据添加到CSV文件的最后一列。我拥有的测试文件如下所示:

NAME,AGE,OFFICE,DEPT,SKILL jack,24,IBM,Retail tom,32,MS,BFSI SAM,44,MGR,Test 姓名、年龄、办公室、部门、技能 杰克,24岁,IBM,零售业 汤姆,32岁,博士后 山姆,44岁,考试经理 我已经设法解析了CSV,但是在最后一列“SKILL”中添加数据是很困难的。要求是在每行的最后一列中添加单词“Java”

NAME,AGE,OFFICE,DEPT,SKILL jack,24,IBM,Retail,Java tom,32,MS,BFSI,Java SAM,44,MGR,Test,Java 姓名、年龄、办公室、部门、技能 杰克,24岁,IBM,零售,爪哇 tom,32岁,微软,爪哇州BFSI SAM,44岁,测试经理,爪哇
请注意,添加到最后一列的值在各行中保持不变。

您只需创建一个包含当前csv数据的对象,并使用字符串
Java
扩展该对象,如下所示:

$results = @() # Empty array to store new created rows in
$csv = Import-Csv "$PSScriptRoot\csvfile.csv"
foreach ($row in $csv) {
    $properties = [ordered]@{
        NAME   = $row.NAME
        AGE    = $row.AGE
        OFFICE = $row.OFFICE
        DEPT   = $row.DEPT
        SKILL  = "Java"
    }
    # insert the new row as an object into the results-array
    $results += New-Object psobject -Property $properties
}
# foreach-loop filled the results-array - export it as a CSV-file
$results | Export-Csv "new-file.csv" -NoTypeInformation

您只需创建一个包含当前csv数据的对象,并使用字符串
Java
扩展该对象,如下所示:

$results = @() # Empty array to store new created rows in
$csv = Import-Csv "$PSScriptRoot\csvfile.csv"
foreach ($row in $csv) {
    $properties = [ordered]@{
        NAME   = $row.NAME
        AGE    = $row.AGE
        OFFICE = $row.OFFICE
        DEPT   = $row.DEPT
        SKILL  = "Java"
    }
    # insert the new row as an object into the results-array
    $results += New-Object psobject -Property $properties
}
# foreach-loop filled the results-array - export it as a CSV-file
$results | Export-Csv "new-file.csv" -NoTypeInformation

您可以更改导入对象的
SKILL
属性的值,并通过以下方式导出到CSV文件:

Import-Csv test.txt |
    ForEach-Object {$_.SKILL = "Java"; $_} |
    Export-Csv test_out.txt -NoTypeInformation
但是,
Export Csv
会在值的周围添加引号,因此
test_out.txt
将如下所示:

"NAME","AGE","OFFICE","DEPT","SKILL"
"jack","24","IBM","Retail","Java"
"tom","32","MS","BFSI","Java"
"SAM","44","MGR","Test","Java"
也许您只需在每行末尾添加
”,Java
,然后再添加第二行:

Get-Content test.txt |
    ForEach-Object { if($_.ReadCount -gt 1) { "$($_),Java" } else { $_ } } |
    Out-File test_out.txt

您可以更改导入对象的
SKILL
属性的值,并通过以下方式导出到CSV文件:

Import-Csv test.txt |
    ForEach-Object {$_.SKILL = "Java"; $_} |
    Export-Csv test_out.txt -NoTypeInformation
但是,
Export Csv
会在值的周围添加引号,因此
test_out.txt
将如下所示:

"NAME","AGE","OFFICE","DEPT","SKILL"
"jack","24","IBM","Retail","Java"
"tom","32","MS","BFSI","Java"
"SAM","44","MGR","Test","Java"
也许您只需在每行末尾添加
”,Java
,然后再添加第二行:

Get-Content test.txt |
    ForEach-Object { if($_.ReadCount -gt 1) { "$($_),Java" } else { $_ } } |
    Out-File test_out.txt

到目前为止你都做了些什么?你能读懂文件吗?问题出在哪里?保存它?我已经设法解析了csv,但是在最后一列“SKILL”中添加数据似乎很困难。要求在每行的最后一列中添加“Java”一词。请不要添加不相关的标记。Powershell-v2.0和-v3.0是特定于版本的标记,仅在无法使用其他版本时使用。命令行和命令行界面与实际问题没有多大关系。到目前为止,您都做了些什么?你能读懂文件吗?问题出在哪里?保存它?我已经设法解析了csv,但是在最后一列“SKILL”中添加数据似乎很困难。要求在每行的最后一列中添加“Java”一词。请不要添加不相关的标记。Powershell-v2.0和-v3.0是特定于版本的标记,仅在无法使用其他版本时使用。命令行和命令行界面与实际问题关系不大。