2012-03-17 178 views
6

我正在开发一个使用C#的Powershell Cmdlet,我想知道是否有方法来控制我在Cmdlet本身写入Powershell的对象的格式。基本上,我拥有太多属性的对象在屏幕上很容易显示,我的Cmdlet将它们发送到Powershell WriteObject()Powershell输出格式化

我希望我的cmdlet用户能够运行它们,并且在Powershell控制台中,读取使用命令提示符返回的数据。不幸的是,Powershell试图适应列的属性数量意味着大多数被截断,而当我添加更多时,它会给每个属性更糟的行。

我已经看到了允许用户正确格式化数据的东西,但没有任何东西允许开发人员设置默认值。基本上我想要的是类似于属性的东西,我可以将它应用到通过Powershell传递给Powershell的对象的每个属性,该属性告诉Powershell是否显示每个属性(假设用户没有设置其他格式选项)。

(我试着让他们的公共领域,而不是性质太,和PowerShell还显示它们)

回答

9

我假设你正在使用的PowerShell 2.0。

如果你的模块称为MyModule,您可以创建一个MyModule.Format.ps1xml文件沿着它描述属性默认显示的内容通过Format-ListFormat-Table等见Get-Help about_Format.ps1xmlFormatting File Overview以获取更多信息。

要将格式文件链接到您的模块,您需要创建一个module manifest并定义FormatsToProcess项目。 New-ModuleManifest cmdlet可以让你开始这个。

+0

完美,谢谢! – Neil 2012-03-17 19:02:47