提供cmdlet中属性的长度提示

时间:2014-01-28 13:33:49

标签: powershell cmdlets

我已经编写了一个返回自定义对象的cmdlet,我希望尝试在默认情况下对数据进行格式化,而不需要使用| format-table -autosize

在本质上,该对象有三个属性:两个字符串和一个int。我知道的其中一个字符串永远不会超过20个字符宽,但另一个字符串可能超过100个字符。

目前,Powershell将短列宽度自动格式化为大约60个字符,而长列将屏幕的其余部分设置为30个字符左右,所以我最终得到的输出看起来默认情况下是一些东西像这样:

FileName                                  LineNum Text
--------                                  ------- ---- 
test.txt                                       20 The cow had a dog ... 
rabbit.txt                                     17 It were a dark an ... 
cow.log                                        3  All work and no p ...

简单地创建对象并将其写为PSObject():

var o = new PSObject();
o.Members.Add(new PSNoteProperty(fieldName, value));
[...]

this.WriteObject(o);

理想情况下,我想删除输出中的巨大差距。我看不到任何在MSDN中查找PSNoteProperty的内容,也没有看到PSObject.Members.Add()表明cmdlet可以执行此操作。

1 个答案:

答案 0 :(得分:1)

如果您希望默认情况下这样做,则需要创建自定义对象类型,然后为该类型创建格式xml:

http://msdn.microsoft.com/en-us/library/gg580944(v=vs.85).aspx