2017-08-25 110 views
0

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

文件我用的是这样一个长相:

This is the file I am using

Application;Email 
ApplicationName 1;[email protected] 
ApplicationName 2;[email protected] 

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

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

prob LEM的是,它不显示任何东西,当我尝试改变线Write-Host $el.EmailWrite-Host $el我得到这个:

@{Application;Email=ApplicationName 1;[email protected]} @{Application;Email=ApplicationName 2;[email protected]}

我知道我可以做一些.split()检索数据,但我想了解我怎样才能得到这些数据通常

+0

请问您可以发布实际文件内容(在lea st几行没有敏感数据),而不是一个Excel(?)截图? –

+0

刚刚添加下面的屏幕截图 –

回答

3

出现这种情况,因为你正在使用分号;作为字段分隔符。默认情况下,Import-CSV需要逗号,。因此,有刚刚任命Application;Email,而不是两个ApplicationEmail

$csvfile 

Application;Email 
----------------- 
ApplicationName 1;[email protected] 
ApplicationName 2;[email protected] 

您甚至可以使用双引号指的是意想不到的列名的一列(如冒号声明分隔符):

$csvfile | % {$_."Application;Email"} 
ApplicationName 1;[email protected] 
ApplicationName 2;[email protected] 

要获得预期的结果,请使用-Delimeter这样的参数,

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

Application  Email 
-----------  ----- 
ApplicationName 1 [email protected] 
ApplicationName 2 [email protected] 
+0

非常感谢您的回答,这解决了我的问题! –