-1

这是我的代码:

Write-Host "Field 1 : " $variable1  
Write-Host "Field 2 : " $variable2
Write-Host "Field 3 : " $variable3
Write-Host "Field 4 : " $variable4

我得到如下输出:

   Field 1    : " $variable1    
   Field 2          : " $variable2
   Field 3      : " $variable3
   Field 4           : " $variable4

我怎样才能对齐它们?

谢谢

4

1 回答 1

5

我认为,根据他之前的问题 field1,2,3 ... 是具有可变长度的数据库字段名称。

第一个解决方案,不是很优雅,但您可以使用 -f 格式运算符添加一些额外的空格来对齐您的第二列(下面我们使用 40 个字符减去第一列的长度)

$field1=@("name";"username1")
$field2=@("age";24)
$field3=@("email";"you@there.com")

wh $field1[0] " : " $field1[1] 
wh $field2[0] " : " $field2[1]
wh $field3[0] " : " $field3[1]

wh

#fill some extra whitespaces 
$spaces1=40 - $field1[0].Length
$spaces2=40 - $field2[0].Length
$spaces3=40 - $field3[0].Length
"{0}{1,$spaces1}" -f $field1[0], " : "+$field1[1]
"{0}{1,$spaces2}" -f $field2[0], " : "+$field2[1]
"{0}{1,$spaces3}" -f $field3[0], " : "+$field3[1]

结果

name  :  username1
age  :  24
email  :  you@there.com

name                                  : username1
age                                   : 24
email                                 : you@there.com

第二种解决方案

如果您创建 pscustom 对象,那么您可以使用所有那些花哨的 cmdlet,例如 format-table :):

$col=@(
[PSCustomObject]@{$field1[0]=$field1[1]},
[PSCustomObject]@{$field2[0]=$field2[1]},
[PSCustomObject]@{$field3[0]=$field3[1]}
)

$col |ft

结果 :

Name                           Value                                                                                 
----                           -----                                                                                 
name                           username1                                                                             
age                            24                                                                                    
email                          you@there.com  
于 2012-12-10T06:50:29.463 回答