我正在导入一个格式如下的CSV:
$lines = Import-Csv "c:\scripts\mysystems.csv"
$max = 0
foreach ($system in $lines)
{
if ($system.systemname.Length -gt $max)
{
$max = $system.systemname.Length
}
}
$cols = 5
$temparray = @()
$temprow = @()
$tempname = ""
$i=0
$j=0
foreach ($system in $lines)
{
$tempname = $system.systemname
if ($system.systemname.Length -lt $max)
{
$x = $max - $system.systemname.Length
while ($x -gt 0)
{
$tempname += " "
$x--
}
}
if ($i -le $cols-2)
{
$temprow += @($tempname)
$i++
$j++
if ($j -eq $lines.Count)
{
$temparray += ,@($temprow)
}
}
else
{
$temprow += @($tempname)
$temparray += ,@($temprow)
$temprow = @()
$j++
$i=0
}
}
write-output $temparray | % {$_ -join "`t`t"}
我需要将每个系统名称输出到屏幕。仅此一项很容易,但如果有很多系统,它会将它全部放在一列并占用太多空间。所以我想把所有这些系统名放在一个表中,以便在输出时看起来很漂亮。我想出了以下内容,但有一个更简单的方法。这确实有用,顺便说一下。只是......这么多行。
{{1}}
关于更简单解决方案的想法?
答案 0 :(得分:0)
您可以使用Format-Wide
缩短至:
Import-Csv "c:\scripts\mysystems.csv" |
Format-Wide -Column 5
输出:
Server1 Server2 Server3 Server4 Server11
Server12 Server13 Server14 Server21 Server22
Server23 Server24
间距将根据控制台宽度而变化。我个人希望Format-Wide
支持同时使用-Column 5 -AutoSize
来最小化列之间的空间,但-AutoSize
仅用于自动检测列数(取决于控制台宽度)atm。我已在UserVoice上添加了一条建议,使其缩小Format-Table -AutoSize
之间的间距。