2013-10-18 36 views
13

我有這個代碼,我從PowerShell運行。當我沒有export-csv運行它時,我得到了屏幕上的所有文件夾名稱。導出CSV導出長度,但沒有名稱

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

但是,如果我添加| export-csv c:\test.txt然後我看到下面的文件中沒有該文件夾的名字,我希望就像我看到它在屏幕上。

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

回答

16

Export-Csv導出對象屬性及其值的表。由於您的腳本正在生成字符串對象,並且它們具有的唯一屬性是長度,所以這就是您所得到的。

如果您只想保存該列表,請使用Out-FileSet-Content而不是Export-Csv

+0

了文件的工作就像魅力。感謝您的快速回復。 –

+0

我也添加了| out-file「C:\ TEST.TXT」 - 添加。謝謝 –

9

上一個答案確實有用,但如果有人正在將其輸出到CSV文件中,該怎麼辦。


這確實NOT工作:

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

由於Export-Csv取對象和輸出屬性。 String []的唯一屬性是Length,所以CSV文件只包含Length。

要解決這個問題,我們需要將String []更改爲Object []。最簡單的方法是Select-Object


把每個字符串到一個新的對象[],這樣的名稱屬性:

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

只是再次重申,Select-Object輸出,可以很容易被操縱的自定義PSObject。這是非常強大的信息,明智地使用它。

+0

這條線對我來說是最有幫助的 - $ obj_list = $ str_list | Select-Object @ {Name ='Name'; Expression = {$ _}}。 – HiTech

5

這爲我工作:

$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

你可能需要解釋這段代碼如何解決這個問題。 –