我正在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-Table
或Format-List
吗?)
答案 0 :(得分: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
}
}