我编写了一个简单的 C# cmdlet,我们称之为它Get-Data
,它返回一个对象数组。
protected override void ProcessRecord() {
base.ProcessRecord();
DummyClass[] refs = new DummyClass[2];
refs[0] = new DummyClass("A", "big");
refs[1] = new DummyClass("B", "small");
base.WriteObject(refs);
return;
}
这是 的定义DummyClass
:
public class DummyClass {
public string Name { get; set; }
public string Type { get; set; }
public DummyClass(string name, string type) {
this.Name = name;
this.Type = type;
}
}
当我自己运行 cmdlet 时,我得到了预期的输出 - 一行包含列标题,另外一行包含数组的每个元素。
PS>获取数据 名称类型 ---- ---- 一个大的 B 小
但是,当我将输出通过管道传输到 时Select-Object
,我看到列标题,但没有数据行。
PS>获取数据 | 选择-对象-属性名称、类型 名称类型 ---- ----
我什至尝试指定行数,但没有运气:
PS>获取数据 | Select-Object -Property Name,Type -Last 2
检查的类型Get-Data
返回数据类型DummyClass[]
,这是我所期望的。
(Get-Data).GetType().FullName
有人对我使用时为什么没有数据行有任何想法Select-Object
吗?我不知道这是否重要,但这个 cmdlet 继承自System.Management.Automation.PSCmdlet
.