2013-10-18 14 views
13

Ho questo codice che sto eseguendo da PowerShell. Quando lo eseguo senza export-csv ottengo tutti i nomi delle cartelle sullo schermo.Export-CSV lunghezza esportazione ma non nome

dir | select -expand fullname | % { ($_ -split '\')[7] 

Ma se aggiungo | export-csv c:\test.txt poi vedo segue nel file il nome della cartella che mi aspettavo proprio come lo vedo sullo schermo.

#TYPE System.String 
"Length" 
"13" 
"18" 
"20" 
"22" 
"29" 
"21" 
"24" 
"11" 
"17" 
"20" 
"20" 

risposta

16

Export-Csv esporta una tabella delle proprietà degli oggetti e dei loro valori. Dal momento che lo script sta producendo oggetti stringa, e l'unica proprietà che hanno è la lunghezza, questo è ciò che hai ottenuto.

Se si desidera salvare l'elenco, utilizzare Out-File o Set-Content anziché Export-Csv.

+0

Out-File funzionato come fascino. Grazie per la risposta rapida. –

+0

Ho anche aggiunto | out-file "C: \ TEST.TXT" -Append. Grazie –

9

La risposta precedente funziona, ma cosa succede se qualcuno stava cercando di inviarlo in un file CSV.


Questo fa NON lavoro:

$str_list = @('Mark','Henry','John') 
$str_list | Export-Csv .\ExportStrList.csv -NoType 

Perché Export-Csv prende oggetti e uscite proprietà. Le sole proprietà per una stringa [] sono Lunghezza, quindi il file CSV contiene solo lunghezze.

Per risolvere questo problema, è necessario modificare String [] in un oggetto []. Il modo più semplice è con Select-Object.


Mettere ogni stringa nella proprietà Nome di un nuovo oggetto [], in questo modo:

$str_list = @('Mark','Henry','John') 
$obj_list = $str_list | Select-Object @{Name='Name';Expression={$_}} 
$obj_list | Export-Csv .\ExportStrList.csv -NoType 

Giusto per ribadire, Select-Object emette un PSObject personalizzato che può essere facilmente manipolato. Questa è un'informazione molto potente, usala saggiamente.

+0

Questa riga è stata la più utile per me - $ obj_list = $ str_list | Select-Object @ {Name = 'Name'; Expression = {$ _}}. – HiTech

5

questo ha funzionato per me:

$data = @() 
$row = New-Object PSObject 
$row | Add-Member -MemberType NoteProperty -Name "name1" -Value "Test" 
$row | Add-Member -MemberType NoteProperty -Name "name2" -Value 2 
$data += $row 

$data | Export-Csv "Text.csv" -NoTypeInformation 
-1
$output |Select-Object * | Export-Csv 'h:\filename.csv' -NoTypeInformation 
+0

Potrebbe essere necessario spiegare in che modo questo snippet di codice risolverà il problema. –

Problemi correlati