首页 > 解决方案 > 具有不同信息的两个对象

问题描述

当我收到电子邮件委托时,我会这样做

If ($Delegate.count -eq 0) { 
    $Result = [PSCustomObject]@{ 
        PrimaryEmail = $SourceEmail
        Delegate     = "None"
    }
    $resultsEmail += $Result
}
Else {
    Foreach ($user in $Delegate) {
        $Result = [PSCustomObject]@{ 
            PrimaryEmail = $SourceEmail
            Delegate     = $user.DelegateAddress
        }
        $resultsEmail += $Result
    }
}

我还想获得日历委托并添加它。问题是它是两个独立的信息量。任何一个都可以是不同的数量。

Foreach ($user in $DelegateCalendarl) {
        $Result = [PSCustomObject]@{ 
            CalendarDelegateEmail = $DelegateCalendar.'scope.value'
            CalendarRole          = $DelegateCalendar.role
            CalendarDelegateType  = $DelegateCalendar.'scope.type'
        }
        $ResultsCal += $Result

最后出来的会是一张漂亮的桌子,比如

PrimaryEmail | Delegate      | CalendarDelegateEmail | CalendarRole | CalendarDelegateType
user@email    Delagate@email   Delagate@email           manager          user
user@email       ""            Delagate2@email          Reader           user

如何将两个结果合并到一个漂亮的表格 csv 文件中,就像上面的示例一样?(我知道如何分别输出它们)

标签: powershell

解决方案


这就是我所做的。不漂亮,但它有效。

$SourceEmail = 'test@email.com'
[array]$DelegateEmail = gam user $SourceEmail print delegates | ConvertFrom-Csv
[array]$DelegateCalendar = gam calendar $SourceEmail print acls | ConvertFrom-Csv

[int]$max = $DelegateCalendar.Count
if ([int]$DelegateEmail.count -gt [int]$DelegateCalendar.count) { $max = $DelegateEmail.Count; }
 
$Output = @()
$Result = $null

If ($DelegateEmail.count -eq 0) {$mailD = "None"}
If ($DelegateEmail.count -eq 1) {$mailD = $DelegateEmail.DelegateAddress}
for ( $i = 0; $i -lt $max; $i++) {
    If ($DelegateEmail.count -eq 0 -and $i -ige 1) {$mailD = ""}
    If ($DelegateEmail.count -eq 1 -and $i -gt 0) {$mailD = ""}
    if ($DelegateEmail.count -gt 1) {$MailD = $DelegateEmail.DelegateAddress[$i]}

    $Result = [PSCustomObject]@{ 
        PrimaryEmail          = $SourceEmail
        DelegateEmailAddress  = $mailD
        CalendarDelegateEmail = $DelegateCalendar.'scope.value'[$i]
        CalendarRole          = $DelegateCalendar.Role[$i]
        CalendarDelegateType  = $DelegateCalendar.'scope.type'[$i]
    }
    $Output += $Result
}

$Output | Export-Csv C:\test.csv -NoTypeInformation

推荐阅读