Много раз мне приходилось объединять данные, которые можно получить только из двух отдельных 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.