Export-CSV导出长度但不是名称

时间:2013-10-18 13:13:41

标签: powershell export-to-csv

我有从PowerShell运行的代码。当我在没有export-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"

6 个答案:

答案 0 :(得分:20)

Export-Csv导出一个对象属性及其值的表。由于您的脚本正在生成字符串对象,并且它们拥有的唯一属性是长度,这就是您所拥有的。

如果您只想保存列表,请使用Out-FileSet-Content代替Export-Csv

答案 1 :(得分:12)

之前的答案确实有效,但如果有人想将其输出到CSV文件中会怎样

这样做 NOT 工作:

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

因为Export-Csv获取对象和输出属性。 String []的唯一属性是Length,因此CSV文件仅包含Length。

要解决此问题,我们需要将String []更改为Object []。最简单的方法是使用Select-Object

将每个String放入新Object []的Name属性中,如下所示:

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

为了重新迭代,Select-Object输出一个可以轻松操作的自定义PSObject。这是非常强大的信息,明智地使用它。

答案 2 :(得分:6)

这对我有用:

$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

答案 3 :(得分:0)

这是处理此问题的另一种方法:

  1. 默认情况下输出文件输出

定义主阵列列表

$MASTER_ARRAY_LIST =  [System.Collections.ArrayList]@()

定义输出文件名

$OutputFilename="C:\TEMP\MyOutputFile.csv"

ForEach ( $Something in $List_of_Somethings) {
    $CURRENT_RECORD_DETAILS = New-Object PSObject -Property @{'name'=$($Something.Name);'fullname'=$($Something.FullName);'id'=$($Something.ID)}
    $MASTER_ARRAY_LIST.Add( $CURRENT_RECORD_DETAILS ) > $null
}

$MASTER_ARRAY_LIST.ToArray() | Select-Object -Property name,fullname,id | Export-Csv -Path $OutputFilename -NoTypeInformation

答案 4 :(得分:0)

$test = @("test1","test2","test3")
$test | export-csv "firstTry.csv"
#We see that this fails. So here is how to to do it with the desired results

foreach ($item in $test) {
  [ pscustomobject]@{ ResultColumn = $item } | Export-Csv -Path ./secondTry.csv -NoTypeInformation -Append
}

答案 5 :(得分:-3)

$output |Select-Object * | Export-Csv 'h:\filename.csv' -NoTypeInformation