Powershell - 在 Format-Table 的每一行前加上 String
Powershell - Prefix each line of Format-Table with String
我想知道是否有一种简单的方法可以为 powershell table 的每一行添加一个字符串前缀。
例如,如果我使用以下代码创建一个数组:
$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
如有任何帮助,我们将不胜感激。谢谢。
您可以直接使用格式表达式:
$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
我想知道是否有一种简单的方法可以为 powershell table 的每一行添加一个字符串前缀。
例如,如果我使用以下代码创建一个数组:
$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
如有任何帮助,我们将不胜感激。谢谢。
您可以直接使用格式表达式:
$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