当你创建一个返回自定义对象的函数时,默认情况下没有一个行之有效的方法来控制显示结果。因为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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!