31

我有这个从 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"
4

6 回答 6

34

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

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

于 2013-10-18T13:19:36.847 回答
25

前面的答案确实有效,但如果有人希望将其输出到 CSV 文件中怎么办。


不起作用

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

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

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


将每个字符串放入新 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。这是非常强大的信息,请明智地使用它。

于 2014-07-16T12:45:45.760 回答
8

这对我有用:

$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
于 2014-08-19T10:27:20.233 回答
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
于 2019-11-04T16:04:59.013 回答
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
}
于 2021-01-14T16:11:34.327 回答
-2
$output |Select-Object * | Export-Csv 'h:\filename.csv' -NoTypeInformation
于 2017-12-14T16:24:51.790 回答