web-dev-qa-db-fra.com

Export-CSV exporte la longueur mais pas le nom

J'ai ce code que je lance depuis PowerShell. Lorsque je l'exécute sans l'export-csv, j'obtiens tous les noms de dossier à l'écran.

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

Mais si j'ajoute | export-csv c:\test.txt alors je vois dans le fichier pas le nom du dossier que j'attendais comme je le vois à l'écran.

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

Export-Csv exporte un tableau des propriétés des objets et leurs valeurs. Étant donné que votre script produit des objets chaîne et que la seule propriété qu'ils possèdent est la longueur, c'est ce que vous avez.

Si vous souhaitez simplement enregistrer la liste, utilisez Out-File ou Set-Content au lieu de Export-Csv.

22
mjolinor

La réponse précédente fonctionne, mais que se passe-t-il si quelqu'un cherche à le sortir dans un fichier CSV.


Cela ne fonctionne pas [~ # ~] et [~ # ~] :

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

Car Export-Csv prend les objets et affiche les propriétés. Les seules propriétés d'une chaîne [] étant la longueur, le fichier CSV ne contient que des longueurs.

Pour résoudre ce problème, nous devons changer la chaîne [] en un objet []. La manière la plus simple est avec Select-Object.


Mettez chaque chaîne dans la propriété Name d'un nouvel objet [], comme ceci:

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

Juste pour réitérer, Select-Object génère un objet PSO personnalisé qui peut facilement être manipulé. Il s'agit d'informations très puissantes, utilisez-les à bon escient.

12
Sean M.

Cela a fonctionné pour moi:

$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
6
derBasti