2013-07-05 10 views
12

Czy istnieje sposób na utworzenie obiektu CSV w powłoce ze zmiennej zawierającej łańcuch? W tej chwili muszę napisać zawartość w pliku temp, a następnie zaimportować je do pliku CSV i chcę ograniczyć operacje dyskowe:Importuj-CSV z łańcucha zamiast z pliku?

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

EDIT

@Graham Złoto, Јοеу dzięki za odpowiedzi (mam ustawione +1 na was obu), ale wydaje się odpowiedzią Joey'a jest correct.Here to moja próba:

$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 

A wynik:

ConvertFrom result: 

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

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

Odpowiedz

22

Można użyć ConvertFrom-Csv zamiast:

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

Import-Csv jest niewiele więcej niż owinięcie wokół Get-Content i ConvertFrom-Csv.

2

Nawet lepiej:

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

Ta kwestia została już odpowiedział i zaakceptowane. Czy możesz wyjaśnić, dlaczego twoja odpowiedź jest jeszcze lepsza niż ta, która została zaakceptowana? – Jonas

+1

Właściwie, po ponownym przeczytaniu pytania powinienem podać nieco inne rozwiązanie: $ csv_content1 = ConvertFrom-CSV -delim ';' -Input $ some_string Zaletą jest to, że nie trzeba umieszczać struny na rurociągu. Jednak dla przykładowego tekstu podanego, gdy programista chce, jest tekst osadzony w samym programie, użycie przykładu z ciągiem @here jest lepsze, ponieważ nie wymaga najpierw zapisania tekstu w zmiennej łańcuchowej i ponownie utworzenia rurociągu niepotrzebnie. – wtgreen

+0

Czy możesz edytować odpowiedź i dodać to wyjaśnienie, aby osoby, które znajdą to pytanie w przyszłości, zrozumiały, dlaczego Twoja odpowiedź może być lepsza? Podczas odpowiadania na stare pytania zazwyczaj lepiej podać jak najwięcej szczegółów. Strona działa lepiej, jeśli pomagamy, przekazując informacje wystarczające, aby ludzie mogli zrozumieć, jak działają nasze odpowiedzi. Dzięki. – Jonas

Powiązane problemy