簡體   English   中英

在Powershell cmdlet中寫入軟對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM