
特に共有メールボックスで利用することが多いですが、フルアクセス許可を付与することでメールボックスへのアクセスを許可し、代理送信権限でそのメールボックスのアドレスをFrom として送信することが可能となります。
今回は、フルアクセス許可、代理送信権限 (メールボックス所有者として送信する権限、代理送信) が付与されているユーザーの一覧の取得、特定のユーザーに付与されている権限を確認するスクリプトをご紹介したいと思います。
読み取りと管理 (フルアクセス) 権限情報の取得
すべてのユーザーを取得する場合
$mailboxes = Get-Mailbox -ResultSize Unlimited
$result = @()
foreach ($mbx in $mailboxes) {
$permissions = Get-MailboxPermission -Identity $mbx.Identity | Where-Object {
$_.AccessRights -contains "FullAccess"
}
if ($permissions) {
$result += [PSCustomObject]@{
MailboxAddress = $mbx.PrimarySmtpAddress
User = $permissions.User
AccessRights = $permissions.AccessRights
}
}
}
$result | Export-Csv -Path "C:\temp\FullAccessPermissions.csv" -NoTypeInformation
特定のユーザーの場合
"user@contoso.com" を対象ユーザーのアドレスに置き換えて実行してください。
Get-Mailbox -ResultSize Unlimited | ForEach-Object {
$mailbox = $_
Get-MailboxPermission -Identity $mailbox.Identity -User "user@contoso.com" | Select-Object @{Name="MailboxAddress";Expression={$mailbox.PrimarySmtpAddress}},User,AccessRights
} | Export-Csv -Encoding UTF8 -NoTypeInformation -Path "C:\temp\FullAccessList.csv"
<出力結果>
MailboxAddress : フルアクセス許可を持つユーザー
User : フルアクセス許可が付与されているユーザー
AccessRights : 権限
メールボックス所有者として送信する権限情報の取得
すべてのユーザーを取得する場合
$mailboxes = Get-Mailbox -ResultSize Unlimited
$result = @()
foreach ($mbx in $mailboxes) {
$permissions = Get-RecipientPermission -Identity $mbx.Identity | Where-Object {
$_.Trustee -ne $null -and $_.AccessRights -contains "SendAs" -and $_.Trustee -ne "NT AUTHORITY\SELF"
}
foreach ($perm in $permissions) {
$result += [PSCustomObject]@{
MailboxAddress = $mbx.PrimarySmtpAddress
Trustee = $perm.Trustee
AccessRights = $perm.AccessRights -join ", "
}
}
}
$result | Export-Csv -Path "C:\temp\SendAsPermissions.csv" -NoTypeInformation -Encoding UTF8
特定のユーザーの場合
"user@contoso.com" を対象ユーザーのアドレスに置き換えて実行してください。
$mailboxes = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox
$result = @()
foreach ($mbx in $mailboxes) {
$permissions = Get-RecipientPermission -Identity $mbx.Identity | Where-Object {
$_.Trustee -eq "user@contoso.com" -and $_.AccessRights -contains "SendAs"
}
foreach ($perm in $permissions) {
$result += [PSCustomObject]@{
MailboxAddress = $mbx.PrimarySmtpAddress
Trustee = $perm.Trustee
AccessRights = $perm.AccessRights -join ", "
}
}
}
$result | Export-Csv -Path "C:\temp\SendAsList.csv" -NoTypeInformation -Encoding UTF8
<出力結果>
MailboxAddress : 送信権限を持つユーザー
Trustee : 送信権限が付与されているユーザー
AccessRights : 権限
代理人として送信する権限情報の取得
すべてのユーザーを取得する場合
$mailboxes = Get-Mailbox -ResultSize Unlimited
$result = @()
foreach ($mbx in $mailboxes) {
$delegates = $mbx.GrantSendOnBehalfTo
if ($delegates) {
foreach ($delegate in $delegates) {
$resolved = Get-Recipient $delegate
$result += [PSCustomObject]@{
MailboxAddress = $mbx.PrimarySmtpAddress
Delegate = $resolved.PrimarySmtpAddress
PermissionType = "SendOnBehalf"
}
}
}
}
$result | Export-Csv -Path "C:\temp\SendOnBehalfPermissions.csv" -NoTypeInformation -Encoding UTF8
特定のユーザーの場合
"user@contoso.com" を対象ユーザーのアドレスに置き換えて実行してください。
$userToFind = "user@contoso.com"
$mailboxes = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox
$result = @()
foreach ($mbx in $mailboxes) {
$delegates = $mbx.GrantSendOnBehalfTo
if ($delegates) {
foreach ($delegate in $delegates) {
$resolved = Get-Recipient $delegate
if ($resolved.PrimarySmtpAddress -eq $userToFind) {
$result += [PSCustomObject]@{
MailboxAddress = $mbx.PrimarySmtpAddress
Delegate = $resolved.PrimarySmtpAddress
PermissionType = "SendOnBehalf"
}
}
}
}
}
$result | Export-Csv -Path "C:\temp\SendOnBehalfPermissions.csv" -NoTypeInformation -Encoding UTF8
<出力結果>
MailboxAddress : 代理送信権限を持つユーザー
Delegate : 代理送信権限が付与されているユーザー
PermissionType : 権限