To accomplish this, use Invoke-Expression.
You can ignore everything in the code below up to line 32 (it's just creating the pseudo-CSV data):
$CSV1001 = @'
Name,Value
1SP1,1SP01
1SP2,1SP02"
'@
$CSV1002 = @'
Name,Value
2SP1,2SP01
2SP2,2SP02
2SP3,2SP03
'@
$CSV1003 = @'
Name,Value
3SP1,3SP01
3SP2,3SP02
'@
[collections.arraylist]$1001 = $CSV1001 | ConvertFrom-Csv
[collections.arraylist]$1002 = $CSV1002 | ConvertFrom-Csv
[collections.arraylist]$1003 = $CSV1003 | ConvertFrom-Csv
$CSVmaintable = @'
Name,Value
1SP,$1001
2SP,$1002
3SP,$1003
'@
[collections.arraylist]$maintable = $CSVmaintable |
ConvertFrom-Csv |
ForEach-Object{
[PSCustomObject]@{
Name = $_.Name
Value = invoke-Expression $_.Value
}
}