2013-07-05 40 views
12

有沒有辦法在包含字符串的變量的powershell中創建一個csv對象? 目前,我需要寫一個臨時文件內容,然後將其導入CSV,我想,以減少磁盤操作:從字符串而不是從文件導入Csv?

$some_string | Set-Content $temp_file 
$csv_content=Import-Csv $temp_file 

編輯

@Graham黃金,Јοеу感謝您的答案(我對你們倆設置+1),但似乎是Joey的答案是correct.Here的我的測試:

$csv_string=" 
`"col1`" ; `"col2`" 
val11 ; val12 
val21 ; val22" 

$csv_content1 = $csv_string | ConvertFrom-CSV 
$csv_content2 = $csv_string | ConvertTo-CSV 
" 
ConvertFrom result:" 
$csv_content1 
" 
ConvertTo result:" 
$csv_content2 

而結果:

ConvertFrom result: 

H1                    
--                    
col1 ; "col2"                 
val11 ; val12                 
val21 ; val22                 

ConvertTo result: 
#TYPE System.String 
"Length" 
"47" 

回答

22

您可以使用ConvertFrom-Csv代替:

$csv_content = $some_string | ConvertFrom-Csv -Delim ';' 

Import-Csv比包裝更小周圍Get-ContentConvertFrom-Csv

2

更妙的是:

$csv_content1 = ConvertFrom-CSV -delim ';' -Input @" 
"col1"; "col2" 
val11 ; val12 
val21 ; val22 
"@ 
+0

這個問題已經回答和接受。你能否澄清爲什麼你的答案比被接受的答案更好? – Jonas

+1

其實,在再次閱讀這個問題時,我應該提供一個稍微不同的解決方案: $ csv_content1 = ConvertFrom-CSV -delim';' - 輸入$ some_string 好處是它不需要把字符串放在管線上。 但是,對於開發人員希望將文本嵌入到程序本身中時給出的示例文本,使用帶有@here字符串的示例更好,因爲它不需要先將文本保存到字符串變量中,然後再次創建不必要的管道。 – wtgreen

+0

請問您可以編輯您的答案並添加此解釋,以便將來發現此問題的人員明白爲什麼您的答案可能會更好?特別是在回答舊的問題時,通常最好提供儘可能多的細節。如果我們通過提供足夠的信息幫助人們瞭解事情如何在我們的答案中發揮作用,該網站會更好地發揮作用謝謝。 – Jonas

相關問題