2012-12-10 45 views
-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 

我該如何調整呢?

感謝

+0

他們應該被默認對齊。輸出很可能不包含雙引號,變量將被替換爲各自的值。你可否確認?如果您告訴上述變量中​​存儲的內容可能會有幫助,可能是關於特殊字符。 – Neolisk

+5

我不知道輸入可以產生輸出。請提供*可重現*的測試用例。 – 2012-12-10 00:41:11

回答

4

我認爲,根據他以前的那個field1,2,3 ......是可變長度的數據庫字段的名稱問題。

第一個解決方案,不是很優雅,但你可以使用-f格式運算符添加一些額外的空格來調整您的第二列(波紋管,我們使用40個字符減去第一列的長度)

[email protected]("name";"username1") 
[email protected]("age";24) 
[email protected]("email";"[email protected]") 

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 : [email protected] 

name         : username1 
age         : 24 
email         : [email protected] 

解決方法二

如果創建pscustom對象,那麼你可以使用所有那些花哨的cmdlet,如格式表:):

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

$col |ft 

結果:

Name       Value                     
----       -----                     
name       username1                    
age       24                      
email       [email protected]