在PowerShell中折行以创建CVS

时间:2018-09-25 18:24:50

标签: powershell csv

在PowerShell构造的CSV中,有没有办法在同一列中换行?例如

Role     |Scope
--------------------
Role 01  |Scope 01
         |Scope 02
--------------------
Role 02  |Scope 01
         |Scope 03

我不确定这是否可以实现。如果没有,支持的格式是什么,例如HTML?

[更新]以下是我的CSV对象结构

class CsvObj {
   [Object] ${Role}
   [Object] ${Scope}
}

$roleList= Get-Role
$array = @()

ForEach ($role in $roleList) {
   $roleObj = [CsvObj]::new()
   $roleObj.Role = $role.Role
   $roleObj.Scope = $role.Scope
   $array += $roleObj
}
$array | Export-Csv -Path C:\file.csv

每个角色的作用域可能更多,我希望将它们适当地分组。

2 个答案:

答案 0 :(得分:3)

为了使以后的数据易于处理,我建议您准备这样的数据:

Role     Scope
----     -----
Role 01  Scope 01
Role 01  Scope 02
Role 02  Scope 01
Role 02  Scope 03

通过这种方式,您始终可以将其分组

Import-Csv foo.csv | group Role

其他版本的替代方案要复杂得多。

您可以在CSV单元格中插入换行符,但是出于这个目的,我认为它们不是最好的主意。如果您出于美观目的需要此功能,则CSV可能是错误的格式,HTML可能是更好的选择。

答案 1 :(得分:1)

只需在范围之间插入换行符(`n):

[pscustomobject]@{Role='Role 01';Scope="Scope 01`nScope 02"},
[pscustomobject]@{Role='Role 02';Scope="Scope 01`nScope 03"} | ConvertTo-Csv