如何从 Get-MailboxPermission PowerShell 中删除禁用的 AD 用户

问题描述 投票:0回答:0

我目前正在从 Exchange Online 导出所有共享邮箱访问。 它有效,但该导出中有很多禁用用户。

这就是问题开始的地方。即使我们使用 Azure AD 同步,在我们的 AD 中禁用的用户在 O365 中仍被标记为活动。所以使用过滤器不是一种选择。

我尝试将活动 AD 用户的 UPN 导出到 CSV,然后也导出我的共享邮箱,导入 CSV 并使用 Compare-Object 比较它们,但我也无法做到这一点。 我还尝试比较和删除数组中未指示为“==”的条目,但我不知道该怎么做。

是否有另一种方法可以在 Get-MailboxPermission cmdlet 中过滤活动 AD 用户?

#Get All AD Users 
$ActiveADUsers = Get-ADUser -Filter * | Where {$_.Enabled -eq $True -and $_.userPrincipalName -like '*domain.com'} | Select @{expression={$_.userPrincipalName}; label='User'} `
| Export-Csv -Encoding UTF8 -Path "C:\activeadusers.csv" -Append -NoTypeInformation

#Multiple Shared Mailboxes
$SharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox -Resultsize unlimited -Filter {(Name -like "DOMAIN*")}
$Results = foreach ($SharedMailbox in $SharedMailboxes)
{
Get-MailboxPermission $SharedMailbox `
| Select-Object @{expression={$_.Identity}; label='Shared Mailbox'},@{Name='Name';expression={(Get-Recipient $_.user.tostring()).displayname}},User,AccessRights `
| Where-Object {($_.user -like '*@*')}
}

$Results | Export-Csv -Encoding UTF8 -Path "C:\sharedmailbox-access.csv" -Append -NoTypeInformation

这让我得到了我需要的文件,然后我尝试将这段代码合并到上面的代码中,但是列不对应并且非活动用户仍在其中:

$file1 = Import-Csv C:\sharedmailbox-access.csv
$file2 = Import-Csv C:\activeadusers.csv


$compareParams = @{
    ReferenceObject = $file1
    DifferenceObject = $file2
}

Compare-Object @compareParams -Property userPrincipalName -PassThru -IncludeEqual | 
Where-Object -Property SideIndicator -eq '==' |
 select @{expression={$_.Identity}; label='Shared Mailbox'},@{Name='Name';expression={(Get-Recipient $_.user.tostring()).displayname}},User,AccessRights |
 Export-Csv -Path 'C:\newfile.csv' -Append -NoTypeInformation -Force``
powershell export
© www.soinside.com 2019 - 2024. All rights reserved.