将 csv 文件中的记录转换为字符串(如果以 .txt 文件打开会显示什么)

Convert record in csv file to string (what would show if opened as .txt file)

我想要的应该很简单

我使用的csv文件:

"SamAccountName","sn","GivenName"
"PBrain","","Brain"
"JSteward","John","Steward"
"JDoe","John","Doe"
"SDoo","Scooby","Doo"

我的代码:

$baseFileCsvContents = Import-Csv $baseFile

$baseFileCsvContents | ForEach-Object {
    $baseSameAccountName = $_.SamAccountName
    [String]$mergedLineInFile = $_ | Out-String

    Write-Host '$mergedLineInFile =' $mergedLineInFile
    Exit
}

输出:

SamAccountName                                  sn                                             GivenName
--------------                                  --                                             ---------
PBrain                                                                                         Brain

预期输出:

"PBrain","","Brain"

谁能帮帮我?请?

这比将对象通过管道传输到字符串要复杂一些。您必须评估代表 CSV 中一行的 PSObject 的每个 属性,然后将值转换为字符串。

$baseFileCsvContents = Import-Csv $BaseFile
$properties = $baseFileCsvContents[0] | get-member -MemberType NoteProperty | Select-Object Name | %{$_.Name.ToString()}
foreach ($item in $baseFileCsvContents) {
    $mergedLineArray = $properties | %{'"' + $item.$($_) + '"'} 
    $mergedLineInFile = $mergedLineArray -join ','
    Write-Host '$mergedLineInFile =' $mergedLineInFile
}