Назад | Перейти на главную страницу

Как объединить свойства в Powershell из нескольких объектов

Много раз мне приходилось объединять данные, которые можно получить только из двух отдельных CMDLET PowerShell, в один набор данных для экспорта. Я считаю, что это можно сделать, создав PSObject и собрав там данные, а затем выбрав данные из PSOBject и экспортируя их.

Пример того, что я пытаюсь сделать. Это пока не работает.

$OU1 = 'Contoso.com/Contoso Service Accounts'
$MBXStats = get-mailbox -OrganizationalUnit $OU1 | Get-MailboxStatistics
$MBXDN = get-mailbox -OrganizationalUnit $OU1 | Select DistinguishedName

$bucket = @()

foreach ($MBX in $MBXStats){

$PropertyObj = New-Object psobject -Property @{
    DisplayName = $MBXStats.DisplayName
    ItemCount = $MBXStats.ItemCount
    TotalItemSize = $MBXStats.TotalItemSize
    LastLogonTime = $MBXStats.LastLogonTime
    OriginatingServer = $MBXStats.OriginatingServer
    DistinguishedName = $MBXProps.DistinguishedName
    }
    $bucket += $PropertyObj
}

$bucket | Out-GridView

Я понятия не имею, как даже начать интегрировать сбор данных для $MBXDN = get-mailbox -OrganizationalUnit $OU1 | Select DistinguishedName в сценарий.

Похоже, вы пытаетесь объединить свойства из нескольких объектов в выходной поток. Я думаю, что лучший способ достичь вашей цели - использовать вычисленные свойства в вашем конвейере. Однако в вашем примере кода MBXProps - необъявленная переменная, которая может быть основной причиной того, почему ваш процесс не работает. Хотя вы, вероятно, выбрали, какой код показать нам (как правило, плохая идея), поэтому я предполагаю, что вы пытаетесь интегрировать MBX DN в свой набор данных.

$MBXStats = get-mailbox -OrganizationalUnit $OU1 | Get-MailboxStatistics
$MBXDN = get-mailbox -OrganizationalUnit $OU1 | Select DistinguishedName

$MBXStats | Select *,@{N="DistinguishedName";E="$($MBXDN.DistinguishedName)"}

Вкратце, вы хотите добавить расчетное свойство к выходу. Я немного ленив, ценив все * свойства, а не несколько избранных, но вы можете адаптировать его к своим потребностям. Следует отметить, что вы должны стараться всегда выводить объекты, чтобы использовать истинную мощь Powershell.