如何在Powershell中更改我的类型的单个成员的格式?

如何在Powershell中更改我的类型的单个成员的格式?,powershell,powershell-3.0,Powershell,Powershell 3.0,我有一组C#类,每个类都有一两个ulong成员。Powershell默认情况下将这些输出为10个基数,但我希望将它们显示为带有0x前缀的十六进制数。我正试图找出如何正确处理.ps1xml文件 我尝试的第一件事是添加一个types.ps1xml文件,该文件添加了一个与我要替换的脚本属性同名的脚本属性。如果我给它一个不同的名称(即添加一个新成员),它可以正常工作,但如果我使用与现有名称相同的名称,则会使ISE崩溃,如下所示: <Members> <ScriptPropert

我有一组C#类,每个类都有一两个ulong成员。Powershell默认情况下将这些输出为10个基数,但我希望将它们显示为带有0x前缀的十六进制数。我正试图找出如何正确处理.ps1xml文件

我尝试的第一件事是添加一个types.ps1xml文件,该文件添加了一个与我要替换的脚本属性同名的脚本属性。如果我给它一个不同的名称(即添加一个新成员),它可以正常工作,但如果我使用与现有名称相同的名称,则会使ISE崩溃,如下所示:

<Members>
    <ScriptProperty>
        <Name>ForeignId</Name>
        <GetScriptBlock>'0x{0:x16}' -f $this.ForeignId</GetScriptBlock>
    </ScriptProperty>      
</Members>

异化
'0x{0:x16}'-f$this.foreigned
我假设这是一个无限递归问题

也许我真正想做的是改变格式!因此,我开始考虑创建format.ps1xml并使用
,但现在似乎需要完全定义格式。我必须指定我想要的每个成员,并且我必须为我想要的所有视图指定。嗯,这是一个很大的工作


我只想更改单个成员的格式,而不添加新成员。有可能吗?

几天前遇到了这个问题。也许有用


几天前遇到了这个问题。也许有用


谢谢你的链接,这很有趣。我可以看到在我自己的自定义类型中使用它。不幸的是,这对解决这个问题没有帮助,因为我试图在我的高级脚本无法控制的情况下更改.NET类型的默认格式。我需要一种方法来改变类型的全局格式(本文针对每个实例),除了ps1xml文件之外,我不知道还有什么方法可以做到这一点。我想我可以用ps1xml做我想做的事情,只是因为它有太多的特性,我很难弄清楚如何让它完成这个特定的任务。希望我有一个更好的答案。我相信可以使用ps1xml文件来完成。我搞砸了一些,我想我宁愿比基尼给狼獾上蜡。谢谢链接,这很有趣。我可以看到在我自己的自定义类型中使用它。不幸的是,这对解决这个问题没有帮助,因为我试图在我的高级脚本无法控制的情况下更改.NET类型的默认格式。我需要一种方法来改变类型的全局格式(本文针对每个实例),除了ps1xml文件之外,我不知道还有什么方法可以做到这一点。我想我可以用ps1xml做我想做的事情,只是因为它有太多的特性,我很难弄清楚如何让它完成这个特定的任务。希望我有一个更好的答案。我相信可以使用ps1xml文件来完成。我搞砸了一些,我想我宁愿比基尼给狼獾上蜡。