Powershell 具有不同信息的两个对象

Powershell 具有不同信息的两个对象,powershell,Powershell,当我收到电子邮件时,我是这样做的 If ($Delegate.count -eq 0) { $Result = [PSCustomObject]@{ PrimaryEmail = $SourceEmail Delegate = "None" } $resultsEmail += $Result } Else { Foreach ($user in $Delegate) { $Resul

当我收到电子邮件时,我是这样做的

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文件,如上面的示例所示?
(我知道如何分别输出它们)

我就是这么做的。虽然不漂亮,但很管用

$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

你是如何得到数据的?它可以像将两个值添加到一个PSObject一样简单如果要合并两个对象,则必须有一个关联列,这意味着,
$resultsEmail
应该有一个与
$resultsCal
上的列相关联的列。如果他的情况是这样的,那么您可以向我们展示每个对象上的一行是什么样子的,这会有所帮助。再加上我之前的评论,通过查看您的预期结果,似乎这可能是
委派
&
日历委派电子邮件
之间的关联,但是在最后一行,由于
Delegate
为空,无法在逻辑上匹配这两列,因此根据当前信息,无法合并您的两个对象。我可以键入主地址。其思想是为同一邮箱获取邮箱委托和日历委托。因此,我使用的两个命令的主邮件都是address。我使用gam获取google邮箱委托和日历。顺便说一句,非常烦人的“$DelegateEmail”。DelegateAddress[$I]''会给我1个字母的答案,除非($I-gt 1)