导出-csv -追加实际上并没有追加第二组项



我正在尝试获取用户的两个CSV文件并将一个附加到另一个。我首先导入 CSV 并从每个列中仅选择所需的列,然后将这些编辑的 CSV 移动到临时 CSV 文件 (Temp1.csv 和Temp2.csv(。然后,我获取两个临时 CSV 文件并使用Select-Object -Skip 1删除第一行(标题(,并将其设置为两个新的临时 CSV(Temp3.csv 和 Temp4.csv(。接下来,我将Temp3.csv作为变量导入,然后立即将该 CSV 导出为我的最终文件。最后,我将Temp4.csv作为变量导入,然后将其导出为我保存 Temp3 的相同文件名,但带有-Append-Force标志。但是,Temp4 并没有像我期望的那样附加到 Temp3 中。我觉得我错过了一些明显的东西,这几乎肯定不是编写这个脚本的最佳方法。不过,一切都在最后一部分之前工作。任何帮助将不胜感激。

我在此处遵循了导出 CSV PowerShell 文档的示例 6:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/export-csv?view=powershell-6

我还尝试了Set-ContentGet-Content的组合以及Import-CSVExport-CSV的组合。以下是我的最新版本和相关输出:


# Get today's date to add to the end of the user upload file
$importDate = Get-Date -Format "yyyy.MM.dd"
# Import the record, but only select the employee's email address, preferred first name, and last name
# and place those three columns' worth of data in the temp csv file 
Import-Csv -Path "EmployeeList.csv" |
Select-Object "Email","FName","LName" |
Where-Object {$_."Email" -ne ""} |
Export-Csv -Path "Temp1.csv" -NoTypeInformation
# Import the record, but only select the employee's email address, preferred first name, and last name
# and place those three columns' worth of data in the temp csv file
Import-Csv -Path "ContractorList.csv" |
Select-Object "Email","FName","LName" |
Where-Object {$_.Email -like "*@company.com"} |
Export-Csv -Path "Temp2.csv" -NoTypeInformation
# Remove column headings
$tempCSVone = (Get-Content -Path "Temp1.csv")
$tempCSVone | Select-Object -Skip 1 | Set-Content -Path "Temp3.csv"
# Remove column heading
$tempCSVtwo = (Get-Content -Path "Temp2.csv")
$tempCSVtwo | Select-Object -Skip 1 | Set-Content -Path "Temp4.csv"
# Export to final csv
$tempCSVthree = (Import-Csv -Path "Temp3.csv")
$tempCSVthree | Export-Csv -Path "TempFinal_$importDate.csv"-NoTypeInformation
# Append to TempFInal
$tempCSVfour = (Import-Csv -Path "Temp4.csv")
$tempCSVfour | Export-CSv -Path "TempFinal_$importDate.csv" -Append -Force -NoTypeInformation

Results in CSV files: 
Temp1.csv
Email   FName   LName
a@company.com   A   AAA
b@company.com   B   BBB
c@company.com   C   CCC
Temp2.csv
Email   FName   LName
d@company.com   D   DDD
e@company.com   E   EEE
f@company.com   F   FFF
Temp3.csv
a@company.com   A   AAA
b@company.com   B   BBB
c@company.com   C   CCC
Temp4.csv
d@company.com   D   DDD
e@company.com   E   EEE
f@company.com   F   FFF
Expected result in TempFinal.csv:
a@company.com   A   AAA
b@company.com   B   BBB
c@company.com   C   CCC
d@company.com   D   DDD
e@company.com   E   EEE
f@company.com   F   FFF
Actual result in TempFinal.csv:
a@company.com   A   AAA
b@company.com   B   BBB
c@company.com   C   CCC

在拥有文件后,您过于复杂了

  • 导入,相同的属性和顺序
  • 只需将第二个附加到同一文件:
## Q:Test2019912SO_57910524.ps1
Import-Csv -Path "EmployeeList.csv" |
Select-Object Email,FName,LName |
Where-Object Email -ne "" | 
Export-Csv -Path "Temp1.csv" -NoTypeInformation
Import-Csv -Path "ContractorList.csv" |
Select-Object Email,FName,LName |
Where-Object Email -like "*@company.com" |
Export-Csv -Path "Temp1.csv" -NoTypeInformation -Append

> Get-Content .Temp1.csv
"Email","FName","LName"
"a@company.com","A","AAA"
"b@company.com","B","BBB"
"c@company.com","C","CCC"
"d@company.com","D","DDD"
"e@company.com","E","EEE"
"f@company.com","F","FFF"

最新更新