您可以在PowerShell v2脚本中设置对象的DefaultDisplayPropertySet吗?

tot*_*cat 8 powershell powershell-2.0

以下是来自Kirk Munro的博客文章,其中解释了脚本如何在其输出对象上设置DefaultDisplayPropertySet:

Essential PowerShell:定义自定义对象的默认属性

他的技术和示例代码似乎在PowerShell v2中不起作用.(注意,我安装了PowerTab和PSCX - 也许那些可能会干扰.)

任何人都知道如何让这个在PowerShell v2上运行?


更新:这是博客文章中的例子,这对我不起作用(注意,我已经更正了单引号字符):

$myObject = New-Object PSObject
$myObject | Add-Member NoteProperty Name 'My Object'
$myObject | Add-Member NoteProperty Property1 1
$myObject | Add-Member NoteProperty Property2 2
$myObject | Add-Member NoteProperty Property3 3
$myObject | Add-Member NoteProperty Property4 4
$myObject | Add-Member NoteProperty Property5 5
$myObject

  ## Output:
  # Name      : My Object
  # Property1 : 1
  # Property2 : 2
  # Property3 : 3
  # Property4 : 4
  # Property5 : 5

$defaultProperties = @('Name','Property2','Property4')
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]]$defaultProperties)
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet)
$myObject | Add-Member MemberSet PSStandardMembers $PSStandardMembers
$myObject

  ## Output:
  # Name      : My Object
  # Property1 : 1
  # Property2 : 2
  # Property3 : 3
  # Property4 : 4
  # Property5 : 5
Run Code Online (Sandbox Code Playgroud)

添加DefaultDisplayPropertySet后输出应该不相同(即,它应该只有Name,Property2和Property4).

x0n*_*x0n 6

你能举例说明你的非工作代码吗?这应该在v2中完美运行,如果没有,你发现了一个bug.

更新:

(删除了关于引用的评论)

我已经与powershell团队确认这确实是一个回归(bug).

您可以在此投票表明问题对您的重要性:

https://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=487938

谢谢,

-Oisin(powershell MVP)