连接多个变量/ CSV并导出为一个CSV文件Powershell

时间:2016-01-13 21:26:22

标签: csv powershell

例如,

我有CSV文件并导入到PowerShell

undefined

输出

$fullname = Import-Csv “fullname.csv”
$fullname

我有另一个CSV文件并导入

FullName    
------------------
 John      Smith
 Kevin     Johnson

输出

$Email = Import-Csv “Email.csv”
$Email

我想将这2个变量连接起来并导出为一个csv文件,所以我试过这个

 Email
-------
jhrjf@gmail.com
hheraf1010@gmail.com

我也尝试这样

 $fullname = Import-Csv “fullname.csv”
        $fullname
    $Email = Import-Csv “Email.csv”
        $Email

($fullname+$Email)|Export-Csv C:\fullnameandEmail.csv -NoTypeInformation

但它没有用,

我想制作如下的csv,如何连接这2个贵重物品?

-join($fullname,$Email)|Export-Csv C:\fullnameandEmail.csv -NoTypeInformation

非常感谢

3 个答案:

答案 0 :(得分:2)

了解导入CSV后内存中的$fullname$email对象实际上是对象数组,这很有帮助。每个对象都有一个或多个属性,表示CSV中的列值。

您可以遍历任一阵列中的对象,并使用Add-Member cmdlet向每个对象添加新属性。

以下代码循环遍历$email数组,对于每个项目,它会将具有Email值的属性添加到$fullname数组中的相应项目。然后,它将合并的数组导出为CSV文件。

$fullname = Import-Csv "fullname.csv"
$email = Import-Csv "Email.csv"
$i = 0
$email | ForEach-Object { 
    Add-Member -inputobject $fullname[$i] -name Email -value $_.Email -membertype NoteProperty; 
    $i++}
$fullname | Export-Csv -notype -path "C:\fullnameandEmail.csv"

答案 1 :(得分:2)

因此,为了简单起见,我将结合其他两个建议的内容。使用For循环,然后在循环中使用Add-Member

$fullname = Import-Csv “fullname.csv”
$Email = Import-Csv “Email.csv”
For($i=0;$i -lt $fullname.count;$i++){
    $FullName[$i] | Add-Member 'Email' $Email[$i].email
}
$FullName | Export-CSV -NoType Output.csv

答案 2 :(得分:1)

$names = Import-Csv "fullname.csv"
$emails = Import-Csv "email.csv"

for ( $n = 0; $n -lt $names.Count; $n++ ) {
  New-Object PSObject -Property @{
    "FullName" = $names[$n].FullName
    "Email" = $emails[$n].Email
  } | Select-Object FullName,Email
}