Powershell - 使用String为Format-Table的每一行添加前缀

时间:2015-03-06 03:22:52

标签: powershell formatting

我想知道是否有一种简单的方法可以使用String为powershell表的每一行添加前缀。

例如,如果我使用以下代码创建一个数组:

$Array = @()  
$Object = @{}  
$Object.STR_PARAM = "A"  
$Object.INT_PARAM = 1  
$Array += [PSCustomObject] $Object  
$Object = @{}  
$Object.STR_PARAM = "B"  
$Object.INT_PARAM = 2  
$Array += [PSCustomObject] $Object  

调用Format-Table会给出以下输出:

$Array | Format-Table -AutoSize  

STR_PARAM INT_PARAM
--------- ---------
A                 1
B                 2

相反,我希望得到以下内容:

$Array | Format-Table-Custom -AutoSize -PrefixString "  "

  STR_PARAM INT_PARAM
  --------- ---------
  A                 1
  B                 2

如果可能的话,我也希望能够使用Property这样的参数:

$SimpleFormat = @{Expression={$_.STR_PARAM}; Label="String Param"},
                @{Expression={$_.INT_PARAM}; Label="Integer Param"};

$Array | Format-Table-Custom -Property $SimpleFormat -AutoSize -PrefixString "++"

++String Param Integer Param
++------------ -------------
++A                        1
++B                        2

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

您可以直接使用格式表达式:

$f = @{Expression={"++" + $_.STR_PARAM}; Label="++String Param"},
     @{Expression={$_.INT_PARAM}; Label="Integer Param"};
$Array | Format-Table $f -AutoSize  

输出

++String Param Integer Param
-------------- -------------
++A                        1
++B                        2

更新以使用表达式和过滤器

Filter Format-Table-Custom
{
    Param
    (
        [string]
        $PrefixString,
        [object]
        $Property
    )
    end {
        $rows = $input | Format-Table $property -AutoSize | Out-String
        $lines = $rows.Split("`n")
        foreach ($line in $lines) {
            if ($line.Trim().Length -gt 0) {
                $PrefixString + $line
            }
        }
    }
}

$f = @{Expression={"--" + $_.STR_PARAM}; Label="--String Param"},
     @{Expression={$_.INT_PARAM}; Label="Integer Param"};
$Array | Format-Table-Custom -Property $f -PrefixString "++"

输出

++--String Param Integer Param
++-------------- -------------
++--A                        1
++--B                        2