在PowerShell

时间:2017-08-25 08:41:31

标签: powershell csv

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

我使用的文件如下所示:

This is the file I am using

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

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

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

问题是它没有显示任何内容,当我尝试用Write-Host $el.Email更改行Write-Host $el时,我得到了这个:

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

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

1 个答案:

答案 0 :(得分:3)

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

$csvfile

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

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

$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