社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Microsoft365参考書】フルアクセス許可と代理送信権限の情報を取得するスクリプト

フルアクセス許可と代理送信権限の情報を取得するスクリプト

 

 

特に共有メールボックスで利用することが多いですが、フルアクセス許可を付与することでメールボックスへのアクセスを許可し、代理送信権限でそのメールボックスのアドレスをFrom として送信することが可能となります。

 

it-bibouroku.hateblo.jp

 

今回は、フルアクセス許可、代理送信権限 (メールボックス所有者として送信する権限、代理送信) が付与されているユーザーの一覧の取得、特定のユーザーに付与されている権限を確認するスクリプトをご紹介したいと思います。

 

 

 

読み取りと管理 (フルアクセス) 権限情報の取得

 

すべてのユーザーを取得する場合

$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 : 権限

 

 

it-bibouroku.hateblo.jp

 

it-bibouroku.hateblo.jp