Добавление свойств объекта к другому объекту в Powershell - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь добавить свойства объекта $mailBox_MBS к объекту $mailBox_RP.

Я использовал следующий код для определения объектов:

$mailBox_MBS = (Get-MailboxStatistics -Identity $identity) | select *
$mailBox_RP = (Get-Recipient -Identity $identity) | select *

ЗатемЯ использовал следующий цикл ForEach для добавления свойств из mailBox_MBS в mailBox_RP:

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

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Дайте мне знать, если это работает для вас:

$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)
}
0 голосов
/ 26 февраля 2019

Мне удалось преобразовать приведенный выше код в работающую функцию с помощью комментария Сета и моего лучшего друга 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
}
0 голосов
/ 26 февраля 2019

Вы не можете делать это так, как пытаетесь.Ваш foreach увидит только один объект, а вы только поймаете свойства name и value.То, что вы хотите сделать, на самом деле итерировать свойства объекта.Имейте в виду, что при этом вы можете потерять сложность объекта (неявные беседы со строками).Особенно с Exchange это может быть проблемой.

Вы можете либо создать собственный объект PSObject, содержащий просто то, что вам нужно, либо вам нужно будет использовать Get-Member, чтобы получить фактическую информацию об объекте.Это может выглядеть так.

$object | Get-Member -MemberType Property | %{ $object.$($_.Name); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...