使用PowerShell将数组输出转换为表

时间:2018-10-25 04:56:53

标签: powershell powershell-v4.0

我正在从Windows CA导出证书,该证书是一个数组,其中的数据格式如下。我想转换成表格。有想法吗?

发件人:

$a=@(
'a=all
 b=call
',
'a=all
 b=ll'
)

当前输出:

a=all
b=call

a=all
b=ll

所需的输出:

a     b
all   call
all   ll

2 个答案:

答案 0 :(得分:2)

您所拥有的是多行字符串数组。对于所需的输出,您需要一个对象数组:

$a = @(
    [PSCustomObject]@{
        'a' = 'all'
        'b' = 'call'
    },
    [PSCustomObject]@{
        'a' = 'all'
        'b' = 'll'
    }
)

如果您的输入数据实际上是行格式为key=value的多行字符串列表,则可以将其转换为自定义对象,如下所示:

$a = @(
'a=all
b=call',
'a=all
b=ll'
)

$a | ForEach-Object {
    [PSCustomObject]($_ | ConvertFrom-StringData)
}

ConvertFrom-StringData将具有key=value对的一行或多行的字符串转换为哈希表,然后可以将其转换为自定义对象。

答案 1 :(得分:0)

您还可以创建一个空数组,然后使用[PsCustomObject]添加值

$Table = @()
$Table += [Pscustomobject]@{a = "all"; b = "call"}
$Table += [Pscustomobject]@{a = "all"; b = "ll"}