powershell - 如何使用 Powershell 合并其中两列具有相同数据的多个 CSV 文件
问题描述
我对 powershell 主题很陌生,我只是想得到大家的帮助。我需要在一个文件夹中合并多个 CSV 文件,其中这些 CSV 文件具有相同的标题和不同的数据,但在某些情况下,两列或更多列可能具有相同的数据。
所以这是我的代码,
$filevalues = Import-Csv -Path (Get-ChildItem -Path C:\Users\hi\ -Filter '*.csv').FullName
$firstfile = Import-Csv -Path C:\Users\hi\VM1.csv
[String[]]$NamesofApplication = $firstfile.Application;
[String[]]$NamesofFolder = $firstfile.FileName;
[String[]]$NamesofConfigvariable = $firstfile.ConfigVariable;
[String[]]$NamesofVM1 = $filevalues.VM1;
[String[]]$NamesofVM2 = $filevalues.VM2;
[String[]]$NamesofVM3 = $filevalues.VM3;
Write-Host $NamesofVM1.Count
$array = @();
for($i=0; $i -lt $NamesofApplication.Count ; $i++){
$hashtable = [pscustomobject]@{Application=$NamesofApplication[$i]; FileName=$NamesofFolder[$i]; ConfigVariable=$NamesofConfigvariable[$i];VM1=$NamesofVM1[$i];VM2=$NamesofVM2[$i];VM3=$NamesofVM3[$i] };
$array += $hashtable;
};
$array | ForEach-Object { [pscustomobject] $_ } | Export-Csv C:\Users\hi\OutPut.csv
这是我的 VM1.csv、VM2.csv 和 VM3.csv VM1.csv、VM2.csv、VM3.csv
我只希望我的输出像 Output.csv
任何人都可以在这方面帮助我。
解决方案
如果像在您的示例中一样, csv 可以逐行合并,您可以直接使用Add-Member添加数据。一个使用 csv 数据的 Add-member 的小例子。
$csv1 = @'
Appli,Folder,FileName,Config,VM1
ABC,Folder1,FN1,Con1,VM11
,Folder2,FN2,Con2,VM12
,Folder3,FN3,Con3,VM13
SID,Folder4,FN4,Con4,VM14
,Folder5,FN5,Con5,VM15
'@ | ConvertFrom-Csv
$csv2 = @'
Appli,Folder,FileName,Config,VM2
ABC,Folder1,FN1,Con1,VM11
,Folder2,FN2,Con2,VM12
,Folder3,FN3,Con3,VM13
SID,Folder4,FN4,Con4,VM14
,Folder5,FN5,Con5,VM15
'@ | ConvertFrom-Csv
$csv3 = @'
Appli,Folder,FileName,Config,VM3
ABC,Folder1,FN1,Con1,VM11
,Folder2,FN2,Con2,VM12
,Folder3,FN3,Con3,VM13
SID,Folder4,FN4,Con4,VM14
,Folder5,FN5,Con5,VM15
'@ | ConvertFrom-Csv
for ($i = 0; $i -lt $csv1.Count; $i++)
{
$csv1[$i] | Add-Member -MemberType NoteProperty -Name VM2 -Value $csv2[$i].VM2
$csv1[$i] | Add-Member -MemberType NoteProperty -Name VM3 -Value $csv3[$i].VM3
}
$csv1 | ConvertTo-Csv -NoTypeInformation
推荐阅读
- azure - 如何授予应用创建 Azure 逻辑应用的权限
- linux - 如何强制禁用 intel_pstate?即使在 grub 中使用 intel_pstate=disable 选项,也会在重新启动时启用 intel_pstate
- qt - 创建 ListView ClickOnItemList
- eclipse - Jboss 开发人员工作室无法使用 GIT 获取/推送
- html - 使用数组值在 HTML 中分配按钮标签
- python-3.x - python3从sqlite3表中计算值并添加为新列的最快方法
- swift - 如何在 ARKit 中获取相机位置和图像对象位置之间的角度和距离?
- c# - 装饰图案混乱
- jquery - jQuery Simple SkillBar 单击时更新值和图形栏
- php - 尝试用 php 用 aes-256-gcm 解密