从其他PS命令向PS对象添加值

时间:2019-12-12 12:40:40

标签: powershell

我创建了以下对象:

$PSOhash = @{
    ConnectedNode = $ConnectedNode
    ConnectedNodeDeviceNumber = $ConnectedNodeDeviceNumber
    Serialnumber = $Serialnumber
    ProductId = $ProductId
    }
$ClusterNodeSSDs =  New-Object PSObject -Property $PSOhash

,并希望将以下命令中的值添加到其中:

$SSDModel = "xyz123" 
$ClusterNode = "Node1"
gwmi -Namespace root\wmi ClusPortDeviceInformation| select ConnectedNode,ConnectedNodeDeviceNumber, Serialnumber, ProductId | sort ConnectedNodeDeviceNumber | where {($_.ConnectedNode -eq $ClusterNode) -and ($_.ProductId -match "$SSDModel")}

返回正确的信息,但需要将它们作为对象中的属性进行进一步处理。

1 个答案:

答案 0 :(得分:1)

如果要将一组属性值对添加到一个已经不存在的PSObject(在此示例中为$MyObject), 当前没有这些属性 ,您可以为此使用Add-Member命令:

$PSOhash = @{
    ConnectedNode = $ConnectedNode
    ConnectedNodeDeviceNumber = $ConnectedNodeDeviceNumber
    Serialnumber = $Serialnumber
    ProductId = $ProductId
    }
$MyObject = $MyObject | Add-Member -NotePropertyMembers $PSOHash

说明:

通过-NotePropertyMembers参数,您可以将属性值对的哈希表添加到自定义对象。

(可选)您可以结合使用Add-Member的{​​{1}}和-NotePropertyValue一次添加一个属性。


如果要使用另一个对象的属性值(相同的属性名称)更新一个对象的属性值,则可以使用直接分配和成员访问运算符(-NotePropertyName)。

.

说明:

请注意此处使用$SSDModel = "xyz123" $ClusterNode = "Node1" $WmiObjects = Get-WmiObject -Namespace root\wmi ClusPortDeviceInformation | Select-Object ConnectedNode,ConnectedNodeDeviceNumber, Serialnumber, ProductId | Sort-Object ConnectedNodeDeviceNumber | where {($_.ConnectedNode -eq $ClusterNode) -and ($_.ProductId -match "$SSDModel")} $ClusterNodeSSDs = foreach ($WmiObject in $WmiObjects) { $PSOhash = @{ ConnectedNode = $WmiObject.ConnectedNode ConnectedNodeDeviceNumber = $WmiObject.ConnectedNodeDeviceNumber Serialnumber = $WmiObject.Serialnumber ProductId = $WmiObject.ProductId } [pscustomobject]$PSOhash } 循环,因为foreach可能会返回一个集合。因此,您将需要迭代所有这些对象以创建自定义对象。但是,似乎您只能使用Get-WmiObject输出来执行相同的操作。

相关问题