在 PowerShell 中读取 CSV 文件

Lou*_*ont 5 csv powershell

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

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

这是我正在使用的文件

Application;Email
ApplicationName 1;random@address.com
ApplicationName 2;another@email.com
Run Code Online (Sandbox Code Playgroud)

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

$csvfile = Import-CSV -Path "$ScriptDir\SpecificApp.csv"
Foreach ($el in $csvfile) {
    Write-Host $el.Email
}
Run Code Online (Sandbox Code Playgroud)

问题是它不显示任何内容,当我尝试更改该行时,Write-Host $el.EmailWrite-Host $el得到以下信息:

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

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

von*_*ryz 8

当您使用分号;作为字段分隔符时,就会发生这种情况。默认情况下, Import-CSV需要一个逗号,。因此,只有一列被命名,Application;Email而不是两列ApplicationEmail

$csvfile

Application;Email
-----------------
ApplicationName 1;random@address.com
ApplicationName 2;another@email.com
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用双引号引用意外的列名称(因为冒号是语句分隔符):

$csvfile | % {$_."Application;Email"}
ApplicationName 1;random@address.com
ApplicationName 2;another@email.com
Run Code Online (Sandbox Code Playgroud)

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

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

Application       Email
-----------       -----
ApplicationName 1 random@address.com
ApplicationName 2 another@email.com
Run Code Online (Sandbox Code Playgroud)