Как объединить свойства в 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 | Выберите DistinguishedName в скрипте.

3
задан 15 June 2016 в 22:55
1 ответ

Es sieht so aus, als würden Sie versuchen, Eigenschaften von mehreren Objekten im Ausgabestream zu kombinieren. Ich denke, der beste Weg, um Ihr Ziel zu erreichen, besteht darin, berechnete Eigenschaften in Ihrer Pipeline zu nutzen. In Ihrem Codebeispiel ist MBXProps jedoch eine nicht deklarierte Variable, die möglicherweise die Hauptursache dafür ist, dass Ihr Prozess nicht funktioniert. Obwohl Sie wahrscheinlich ausgewählt haben, welcher Code uns angezeigt werden soll (im Allgemeinen eine schlechte Idee), gehe ich davon aus, dass Sie versuchen, den MBX-DN in Ihren Datensatz zu integrieren.

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

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

Zusammenfassend möchten Sie ein berechnete Eigenschaft zur Ausgabe. Ich bin etwas faul, wenn ich alle * -Eigenschaften und nicht die von Ihnen ausgewählten Eigenschaften bewerte, aber Sie können sie an Ihre Bedürfnisse anpassen. Zu beachten ist, dass Sie versuchen sollten, immer Objekte auszugeben, um die wahre Kraft von Powershell zu nutzen.

3
ответ дан 3 December 2019 в 06:29

Теги

Похожие вопросы