[英]writing soft objects in a powershell cmdlet
在我的C#cmdlet中,我想寫出本質上是字典的對象。 即,cmdlet在編譯時不知道對象的具體類型。
假設我有
myobj1["Size"] = 10
myobj1["color"] = "Red"
myobj2["Size"] = 20
myobj2["color"] = "Blue"
我想注入看起來像這樣的管道對象
Size Color
---- -----
10 Red
20 Blue
我努力了
var dict = myObj as IDictioanry<string,object> // it does implement IDictionary
WriteObject(dict);
這只會在輸出鍵和值上產生2個字段。 不是我想要的
我也嘗試加載到expandoobject中-這和字典一樣。
解決:
var pso = new PSObject();
foreach (var k in myobj.PropertyNames)
{
pso.Members.Add(new PSNoteProperty(k, de.Properties[k]));
}
WriteObject(pso);
您可以執行以下操作:
$myobj = @()
$myobj += New-Object PSObject -Property @{
Size = 10
Color= "Red"
}
$myobj += New-Object PSObject -Property @{
Size = 20
Color= "Blue"
}
$myobj | Where-Object Size -eq 10
或單行:
$myobj = @()
$myobj += New-Object PSObject -Property @{Size = 10;Color= "Red"}
$myobj += New-Object PSObject -Property @{Size = 20;Color= "Blue"}
$myobj | Where-Object Size -eq 20
或將新對象部分移至函數中:
function New-MyObject([int]$size,[string]$color)
{
return New-Object PSObject -Property @{Size = $size;Color= "$color"}
}
$myobj = @()
$myobj += New-MyObject 10 Red
$myobj += New-MyObject -size 20 -color Blue
$myobj | Where-Object Size -eq 20
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.