Como combinar propriedades no Powershell de vários objetos

3

Muitas vezes, precisei combinar dados que só podem ser recuperados de dois CMDLETs de powershell separados em um único conjunto de dados para exportação. Acredito que isso deve ser possível criando um PSObject e coletando dados, selecionando dados do PSOBject e exportando-os.

Um exemplo do que estou tentando fazer. Isso não funciona ainda.

$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

Eu não tenho ideia de como começar a integrar o agrupamento de dados para $MBXDN = get-mailbox -OrganizationalUnit $OU1 | Select DistinguishedName no script.

    
por Prince Vultan 15.06.2016 / 00:16

1 resposta

3

Parece que você está tentando combinar propriedades de vários objetos no fluxo de saída. Eu acho que a melhor maneira de atingir seu objetivo é alavancar as propriedades calculadas em seu pipeline. No entanto, no seu exemplo de código, MBXProps é uma variável não declarada que pode ser a principal causa do porque o seu processo não está funcionando. Embora você tenha escolhido o código para nos mostrar (geralmente uma má idéia), então presumo que você esteja tentando integrar o DN do MBX ao seu conjunto de dados.

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

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

Em suma, o que você quer fazer é adicionar uma propriedade calculada à saída. Estou sendo um pouco preguiçoso ao valorizar todas as * propriedades e não as poucas escolhidas, mas você pode adaptá-las às suas necessidades. É importante que você tente sempre produzir objetos para alavancar o verdadeiro poder do Powershell.

    
por 15.06.2016 / 20:22