当你创建一个返回自定义对象的函数时,默认情况下没有一个行之有效的方法来控制显示结果。因为PowerShell默认显示所有的属性,当属性超过四个时,以列表显示,否则以表格显示。例如
function Get-SomeResult
{
$resultset = New-Object PSObject |
Select-Object Name, FirstName, ID, Language, Skill
$resultset.Name = 'Weltner'
$resultset.FirstName = 'Tobias'
$resultset.ID = 123
$resultset.Language = 'PowerShell'
$resultset.Skill = '5'
$resultset
}
输出结果为:
PS C:\> Get-SomeResult Name : Weltner FirstName : Tobias ID : 123 Language : PowerShell Skill : 5
但是在PowerShell 3.0中,你可以通过定义类型的参数来决定哪些属性默认可以显示,并且让它只在你的函数中生效。思想是首先将一个新的自定义类型赋值给你要返回的结果,然后通过调用Update-TypeData 来告诉PowerShell默认应当显示哪些属性数据。更改如下:
function Get-SomeResult
{
$resultset = New-Object PSObject |
Select-Object Name, FirstName, ID, Language, Skill
$resultset.Name = 'Weltner'
$resultset.FirstName = 'Tobias'
$resultset.ID = 123
$resultset.Language = 'PowerShell'
$resultset.Skill = '5'
$resultset
# this section defines the default properties
# and assigns the returned custom objects the
# "type" name: myObject. Choose a different one
# for each type of return object your functions use
if ($PSVersionTable.PSVersion.Major -ge 3)
{
$objectType = 'myObject'
$resultset.PSTypeNames.Add($objectType)
if ((Get-TypeData $objectType) -eq $null)
{
$p = 'Name','ID','Language'
Update-TypeData -TypeName $objectType -DefaultDisplayPropertySet $p
}
}
}
这样处理以后,继续调用该函数,输出为:
PS> Get-SomeResult Name ID Language ---- -- -------- Weltner 123 PowerShell PS> Get-SomeResult | Select-Object * Name : Weltner FirstName : Tobias ID : 123 Language : PowerShell Skill : 5
原文链接:Controlling Object Property Display
本文链接: https://www.pstips.net/powershell-controlling-object-property-display.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
