在Powershell中将对象属性添加到另一个对象

时间:2019-02-26 08:59:11

标签: powershell oop object

我正在尝试将对象$mailBox_RP的属性添加到对象$mailBox_MBS = (Get-MailboxStatistics -Identity $identity) | select * $mailBox_RP = (Get-Recipient -Identity $identity) | select *

我使用以下代码定义了对象:

Foreach($property in $mailbox_MBS)    
{     
  $mailBox_RP | Add-Member -MemberType NoteProperty -Name $property.Name -Value $property.Value 
}

然后,我使用以下ForEach循环将属性从mailBox_MBS添加到mailBox_RP:

UIActivityViewController

3 个答案:

答案 0 :(得分:2)

您无法以尝试的方式进行操作。您的foreach将只看到一个对象,并且您仅捕获名称和值属性。您要做的实际上是迭代对象的属性。请记住,这样做可能会降低对象的复杂性(对字符串的隐式对话)。尤其是对于Exchange,这可能是个问题。

您可以创建一个自定义PSObject来仅包含所需的内容,或者需要使用Get-Member进行研究以获取实际的对象信息。可能看起来像这样。

$object | Get-Member -MemberType Property | %{ $object.$($_.Name); }

答案 1 :(得分:1)

让我知道这是否对您有用:

$mailbox_MBS = Get-MailboxStatistics -Identity $identity
$mailbox_RP = Get-Recipient -Identity $identity

Get-Member -InputObject $mailbox_MBS -MemberType "*Property" | foreach {
    Add-Member -InputObject $mailbox_RP -Type "NoteProperty" -Name $_.Name -Value $mailbox_MBS.($_.Name)
}

答案 2 :(得分:0)

在塞思(Seth)的评论和我最好的朋友Google的帮助下,我设法将上面的代码转换为工作功能。

Function mailBoxInfo ($identity)
{
    $ExchangeDirectoryObject = New-Object PSObject
    $mailbox_MBS = (Get-MailboxStatistics -Identity $identity) | select *
    $mailbox_RP = (Get-Recipient -Identity $identity) | select *

$mailBox_MBS.psobject.Properties | % {
    $ExchangeDirectoryObject | Add-Member -MemberType $_.MemberType -Name $_.Name -Value $_.Value
}
$mailBox_RP.psobject.Properties | % {
    $ExchangeDirectoryObject | Add-Member -MemberType $_.MemberType -Name $_.Name -Value $_.Value
}

return $ExchangeDirectoryObject
}