我有用C#編寫的自定義CmdLet,它返回對象數組。出於測試目的,他們是匿名的。對象數組上的PowerShell Select-Object propertyName
protected override void ProcessRecord()
{
var anonType1 = new { name = "Mikey", description = "Brown" };
var anonType2 = new { name = "Davo", description = "Green" };
List<object> stuff = new List<object>();
stuff.Add(anonType1);
stuff.Add(anonType2);
this.WriteObject(stuff.ToArray());
}
這使得在PS2以下的輸出:
name description
---- -----------
Mikey Brown
Davo Green
如果我使用選擇-對象名稱我希望只是排除了「說明」屬性,並得到米奇和DAVO堆疊在彼此,但沒有!我得到:
name
----
我的數據在哪裏!?
感謝
盧克
作爲一個側面:沒有人知道編程的cmdlet一個良好的學習資源,並與PS的內部(而不是PS的使用其中大部分書都是有關)工作?鉭
UPDATE
即使我做出強有力的類型,新數起來,把它們放在一個PSDataCollection因爲我希望這是行不通的。我的期望顯然是錯誤的。如何正確輸出數據集合到管道?
解決
我們必須設置enumerateCollection =真。聽起來很愚蠢,但我們沒有使用WriteObject保護的方法,而是使用我們自己的WriteToAvailableOutput,它從Visual Studio中轉移到調試器!所以我們看不到WriteObject上額外的重載 - dhuurr!
而不是寫你的問題的解決方案,你應該寫在下面單獨的答案,並將其標記爲接受的答案。 – SpellingD 2012-08-16 16:18:04
是的。我想,因爲這首先是一個愚蠢的問題,所以對於爲它作出完整的回答,我感到有點愚蠢! – 2012-08-18 17:21:35