2013-07-05 12 views
12

文字列を含む変数からpowershellでcsvオブジェクトを作成する方法はありますか?ファイルからではなく文字列からCsvをインポートしますか?

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

EDIT答えを

@Grahamゴールド、Јοеуのおかげ:私は一時ファイルの内容を書き込み、その後、CSVファイルにインポートする必要があると私はディスク操作を減らしたい瞬間 (私はあなたの両方に1を設定している)が、ジョーイの答えは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-CsvGet-ContentConvertFrom-Csvのラッパーより少しです。

2

はさらに良い:

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

この質問はすでに答えて受け入れられています。あなたの答えが受け入れられたものよりも優れている理由を明確にすることができますか? – Jonas

+1

実際には、もう一度質問を読む際に少し違う解決策を提示してください。 $ csv_content1 = ConvertFrom-CSV -delim ';' -Input $ some_string 利点は、文字列をパイプラインに配置する必要がないという点です。 ただし、開発者がプロ​​グラム内に埋め込まれたテキストを望む場合には、@here文字列の例を使用すると、文字列変数にテキストを保存する必要がなくなり、不必要にパイプライン。 – wtgreen

+0

あなたの答えを編集してこの説明を追加してください。将来、この質問を見つけた人々は、あなたの答えがより良くなる理由を理解できますか?特に古い質問に答えるときは、できるだけ多くの詳細を提供する方がよいでしょう。ウェブサイトは、人々が私たちの答えでどのように働くかを理解するのに十分な情報を与えることによって助けてくれば、より効果的です。ありがとう。 – Jonas

関連する問題