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)