我有几个列的数组值$ outData。我不确定如何对齐某些列?
$outData | Select-Object `
Name `
@{Name="Freespace(byte)"; Expression={"{0:N0}" -f $_.FreeSpace}}, '
.... # other colums `
| Format-Table -AutoSize
工作正常。但是,当我尝试将freespace列的align用于右侧时:
@{Name="Freespace(byte)"; Expression={"{0:N0}" -f $_.FreeSpace}; align="right"}, '
我收到错误消息“不支持指定的方法”。不确定是否有任何方法可以将值对齐?
答案 0 :(得分:6)
align指令位于为Format-Table cmdlet指定的散列表中。 IOW,align不是Select-Object支持的哈希表条目。因此,请确保通过传递给Format-Table的哈希表中的哈希表进行格式化,例如:
gps | select name,pm | format-table @{n='Name';e={$_.Name};align='right'},PM
或在你的情况下:
$outData | Format-Table Name,
@{n="Freespace(byte)";e={"{0:N0}" -f $_.FreeSpace};a="right"}
答案 1 :(得分:1)
鉴于Powershell在过去8年中的更新,这个答案在'10中可能不存在。
诀窍是在计算表达式的格式块{0:N0}
中分配多个列,一旦分配,它将使列与右侧对齐。
在原始示例中,包含 ,15
作为数字格式的一部分:
@{Name="Freespace(byte)"; Expression={"{0,15:N0}" -f $_.FreeSpace}}
我通常使用Name =值的字符数来确保整个名称可见。
答案 2 :(得分:0)
这是一个看起来很丑陋的内胆,它是由其他几个线程构成的:
Get-WmiObject win32_LogicalDisk | where { $_.DriveType -eq 3 } | Format-Table DeviceID,VolumeName,@{N="Size";E={'{0:N0}' -f $_.Size};a="right"},@{N="FreeSpace";E={'{0:N0}' -f $_.FreeSpace};a="right"},@{N="Used";E={'{0:N0}' -f ($_.Size - $_.FreeSpace)};a="right"}