script - powershell export to txt
Exportar-CSV exporta longitud pero no nombre (4)
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 en el archivo, no en 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"
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
La respuesta anterior funciona, pero ¿qué pasaría si alguien estuviera buscando imprimirla en un archivo CSV?
Esto NO funciona:
$str_list = @(''Mark'',''Henry'',''John'')
$str_list | Export-Csv ./ExportStrList.csv -NoType
Porque Export-Csv
toma objetos y genera propiedades. Las únicas propiedades para una Cadena [] es Longitud, por lo que el archivo CSV solo contiene Longitudes.
Para arreglar esto necesitamos cambiar la Cadena [] en un Objeto []. La forma más sencilla es con Select-Object
.
Ponga cada cadena en la propiedad Name de un nuevo objeto [], como esto:
$str_list = @(''Mark'',''Henry'',''John'')
$obj_list = $str_list | Select-Object @{Name=''Name'';Expression={$_}}
$obj_list | Export-Csv ./ExportStrList.csv -NoType
Solo para volver a iterar, Select-Object
genera un PSObject personalizado que se puede manipular fácilmente. Esta es una información muy poderosa, úsala sabiamente.
Export-Csv
exporta una tabla de propiedades de objetos y sus valores. Ya que su script está produciendo objetos de cadena, y la única propiedad que tienen es la longitud, eso es lo que tiene.
Si solo desea guardar la lista, use Out-File
o Set-Content
lugar de Export-Csv
.
$output |Select-Object * | Export-Csv ''h:/filename.csv'' -NoTypeInformation