2017-08-25 141 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

非常感謝您的回答,這解決了我的問題! –