Export-CSV exporta longitud pero no nombre

Tengo este código que estoy ejecutando desde powershell. Cuando lo ejecuto sin export-csv obtengo todos los nombres de las carpetas en la pantalla.

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

Pero si agrego | export-csv c:\test.txt | export-csv c:\test.txt luego veo siguiente en el archivo no el nombre de la carpeta que esperaba tal como lo veo en la pantalla.

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

Export-Csv exporta una tabla de propiedades de objeto y sus valores. Dado que su script está produciendo objetos de cadena, y la única propiedad que tienen es la longitud, eso es lo que obtuvieron.

Si solo desea guardar la lista, use Out-File o Set-Content lugar de Export-Csv .

La respuesta anterior funciona, pero ¿qué pasa si alguien está buscando producirla en un archivo CSV?

Esto NO funciona:

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

Porque Export-Csv toma propiedades Objetos y resultados. Las únicas propiedades para un String [] son ​​Length, por lo que el archivo CSV solo contiene Lengths.

Para solucionar esto, necesitamos cambiar la cadena [] en un objeto []. La forma más simple es con Select-Object .

Coloque cada cadena en la propiedad Name de un nuevo objeto [], como este:

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

Para volver a iterar, Select-Object genera un PSObject personalizado que se puede manipular fácilmente. Esta es información muy poderosa, úsala sabiamente.

Esto funcionó para mí:

 $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 
 $output |Select-Object * | Export-Csv 'h:\filename.csv' -NoTypeInformation 
    Intereting Posts