2

我正在PowerShell像这样创建新对象:

# create new object
$res = New-Object PSObject

# assign properties
$res | Add-Member Noteproperty -Name Passed -Value $Passed
$res | Add-Member Noteproperty -Name Duration -Value $Duration
$res | Add-Member Noteproperty -Name Name -Value $TestCase.Name
$res | Add-Member Noteproperty -Name Message -Value $Message

# return result
$res

当我调用此代码时,$res结果项以表格格式显示。我也可以通过添加来强制使用格式| Format-Table

是否可以以某种方式构造新对象,以便在显示时强制使用特定的默认格式?(即:我可以强制Format-TableFormat-List通过在对象上添加一些属性或元数据吗?)

4

1 回答 1

5

我知道获取类型标准格式的唯一方法是创建和加载格式文件(请参阅about_Format.ps1xml)。格式文件根据对象的类型名称“决定”使用哪种格式。因此,当您创建自定义对象时,请确保也给它一个自定义类型名称,以便您可以为其编写自定义视图:

$res = New-Object PSObject
$res.PSTypeNames.Insert(0, 'Result')

然后,在您的格式文件中,Result用作类型名称。使用比 . 更好的名称可能是个好主意Results

格式文件必须先加载才能使用。如果格式文件是模块的一部分,这很容易,如果它是一个松散的格式文件,您的脚本将单独加载,则需要做更多的工作。

您还可以编写自己的格式函数,该函数使用Format-Table和/或Format-List在内部以您想要的方式显示对象,例如

function Format-TestCaseResult
{
    param(
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)]
        $InputObject
    )
    process
    {
        $InputObject | Format-Table -AutoSize
    }
}
于 2013-07-12T16:16:05.767 回答