【问题标题】:How to format PowerShell multidimensional array with Format-Table如何使用 Format-Table 格式化 PowerShell 多维数组
【发布时间】:2021-05-18 14:28:42
【问题描述】:

我想使用 Format-Table 发送 PowerShell 多维数组的输出。

这是我的示例代码:

$a = ('mickey', 1,'pluto'),('qwer', 2, 'fluffy'),('prague', 1, 'new york')

foreach ($i in $a) {
    $value = 0
    if (($i[0] -eq 'mickey') -and ($i[2] -eq 'asdf')) {
        $i[1]++
        break
    } else {
        $value = 1
    }
}


if ($value -eq 1) {
    $a += ,@('mickey', 1, 'asdf')
    $value = 0
}

$a

哪个会输出:

mickey
1
pluto
qwer
2
fluffy
prague
1
new york
mickey
1
asdf

我想使用 PowerShell 格式表来格式化这个输出。分离看起来很整齐,而且我发送给它的代码比你看到的要大。

我知道我可以使用 foreach 并将其与文本并排循环:

for ($i=0; $i -lt $a.length; $i++) {
    $a[$i][0] + " " + $a[$i][1] + " " + $a[$i][2]
}

但是输出视图不是我喜欢的,像每个部分的标题这样的东西会很好。

我在想这样的事情 ,但可惜我无法让它工作: $a | Format-Table -Property @{Name = 'Name'; Expression = {$_[0]}; Width = 20; Align = 'left'}

欢迎任何想法/指导。

【问题讨论】:

    标签: arrays powershell multidimensional-array format


    【解决方案1】:

    通过Select-Object 定义将构成表格列的属性,然后才传递给Format-TableFormat-Table cmdlet 需要一个对象(例如 [PSCustomObject])作为输入,该对象由 Select-Object 生成。

    $a | Select-Object -Property @{ Name = 'Name'; Expression = { $_[0] } } |
         Format-Table -Property @{ Expression = 'Name'; Width = 20; Align = 'left' }
    

    我们使用一个技巧来简化Format-Table 行。通过将字符串而不是脚本块分配给Expression,我们选择了要应用格式的列。这相当于:

    Format-Table -Property @{ Name ='Name'; Expression = { $_.Name }; Width = 20; Align = 'left' }
    

    输出:

    Name
    ----
    mickey
    qwer
    prague
    mickey
    

    【讨论】:

      猜你喜欢
      • 2021-11-28
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2015-07-18
      • 1970-01-01
      • 2017-04-17
      相关资源
      最近更新 更多