我有这个PowerShell代码,它从一个OrganisationalUnit获取邮箱权限。它对于单个OU非常有效。但我想运行多个OU。
我该怎么做?
例如
"OU=gmsa_accounts,DC=contoso,DC=local"
"OU=svc_accounts,DC=contoso,DC=local"
"OU=adm_accounts,OU=Users,DC=contoso,DC=local"
脚本:
$Mailboxes = Get-Mailbox -Resultsize Unlimited -RecipientTypeDetails UserMailbox -OrganizationalUnit "OU=gmsa_accounts,DC=contoso,DC=local"
# creating a table to combine information
$MailboxesResult = @()
# processing all the mailboxes
ForEach ($Mailbox in $Mailboxes){
# getting manager
$permissions = Get-MailboxPermission -Identity $Mailbox.Alias | ? { ($_.IsInherited -eq $False) -and -not ($_.User -Like "NT AUTHORITY*") }
$fullAccess = $permissions | Where-Object { $permissions.AccessRights -eq "FullAccess" }
$permissions = Get-RecipientPermission -Identity $mailbox.Alias | ? { ($_.IsInherited -eq $False) -and -not ($_.Trustee -Like "NT AUTHORITY*") }
$SendAs = $permissions | Where-Object { $permissions.AccessRights -eq "SendAs" }
# combine eveything in a PSCustomObject
$item = [PSCustomObject]@{
Name = $mailbox.DisplayName
FullAccess = $fullAccess.User -replace '^.+\\' -join ','
SendAs = $($sendas.Trustee) -join (",")
}
$MailboxesResult += $item
}
#Export collected information to CSV
$MailboxesResult | Export-Csv -NoTypeInformation C:\Temp\MailboxFolderPermissions2.csv -Encoding UTF8
1条答案
按热度按时间e0bqpujr1#
最简单的选择(取决于您有多少OU)是简单地将您想要查询的每个OU分配到一个数组中,然后循环获取每个结果,循环完成后最终得到
Export-CSV
。例如:对于大量的OU,我可能会考虑以编程方式检索OU列表,但这实际上取决于您的设置,什么会/不会起作用。例如,如果您想要的所有OU都在
<name>_accounts
中,那么您可以尝试以下操作并在开始时使用它而不是硬编码数组。