在PowerShell中读取CSV文件

在PowerShell中读取CSV文件,powershell,csv,Powershell,Csv,我正在尝试使用PowerShell读取.csv文件 我正在使用的文件如下所示: 我在互联网上搜索了一些使用PowerShell读取.csv文件的方法,我发现了一个非常简单和清晰的方法: $csvfile = Import-CSV -Path "$ScriptDir\SpecificApp.csv" Foreach ($el in $csvfile) { Write-Host $el.Email } 问题是它没有显示任何内容,当我尝试使用Write Host$el更改行Write Ho

我正在尝试使用PowerShell读取.csv文件

我正在使用的文件如下所示:

我在互联网上搜索了一些使用PowerShell读取.csv文件的方法,我发现了一个非常简单和清晰的方法:

$csvfile = Import-CSV -Path "$ScriptDir\SpecificApp.csv"
Foreach ($el in $csvfile) {
    Write-Host $el.Email
}
问题是它没有显示任何内容,当我尝试使用
Write Host$el
更改行
Write Host$el.Email
时,我得到以下结果:

@{Application;Email=ApplicationName 1;random@address.com}
@{Application;Email=ApplicationName 2;another@email.com}


我知道我可以使用一些
.split()
检索数据,但我想了解如何正常获取这些数据

这种情况发生,因为您使用分号
作为字段分隔符。默认情况下,需要逗号
。因此,只有一列名为
Application;电子邮件
而不是两个
应用程序
电子邮件

$csvfile

Application;Email
-----------------
ApplicationName 1;random@address.com
ApplicationName 2;another@email.com
您甚至可以使用双引号引用意外的列名(因为冒号是语句分隔符):

要获得预期结果,请使用
-Delimeter
参数,如下所示:

$csvfile = Import-CSV -Path C:\temp\ps.csv -Delimiter ";"
$csvfile

Application       Email
-----------       -----
ApplicationName 1 random@address.com
ApplicationName 2 another@email.com

这种情况会发生,因为您使用分号
作为字段分隔符。默认情况下,需要逗号
。因此,只有一列名为
Application;电子邮件
而不是两个
应用程序
电子邮件

$csvfile

Application;Email
-----------------
ApplicationName 1;random@address.com
ApplicationName 2;another@email.com
您甚至可以使用双引号引用意外的列名(因为冒号是语句分隔符):

要获得预期结果,请使用
-Delimeter
参数,如下所示:

$csvfile = Import-CSV -Path C:\temp\ps.csv -Delimiter ";"
$csvfile

Application       Email
-----------       -----
ApplicationName 1 random@address.com
ApplicationName 2 another@email.com

请您发布实际文件内容(至少几行没有敏感数据)而不是Excel(?)屏幕截图?只在屏幕截图下方添加。您可以发布实际文件内容(至少几行没有敏感数据)而不是Excel(?)屏幕截图吗?只在屏幕截图下方添加非常感谢您的回答,这解决了我的问题!非常感谢你的回答,这解决了我的问题!