Convert data in CSV format using custom labels in PowerShell

When we export any variables without properties using export-csv, we don't get the actual data in the csv file. we only get Length of each values in the variable as shown below. 

I create a variable $array 

$array = "tom","Dick","Harry"

Then try to export it to csv file 

$Array |export-csv Array,csv -notypeinformation 

I get below output 

Length
3
4
5

To fix this, I will have to create a property using custom labels. But before that I would like to explain why it didn't export the actual values. 

$array contains only one property i.e. Length. You can check the same by typing  $array|gm -MemberType Properties.  You will get below result. 

   TypeName: System.String

Name   MemberType Definition       
----   ---------- ----------       
Length Property   int Length {get;}

As the values "tom","Dick","Harry" don't have any property name. they will not be exported to .csv file.  Use below cmdlet to create a property. 

$ArrayWithProp = $array |select @{n="Name";e={$_}}

Now type $ArrayWithProp |gm  -MemberType Properties to check the properties.  You will get the property "Name"

TypeName: Selected.System.String

Name MemberType   Definition            
---- ----------   ----------            
Name NoteProperty System.String Name=tom

now  export the variable to csv using below cmdlet.

$ArrayWithProp |export-csv Array,csv -notypeinformation 

You will get below output! 

Name
tom
Dick
Harry