使用Get-MailboxFolderPermission遍历所有日历

时间:2018-12-10 19:26:44

标签: powershell exchange-server

我对此进行了广泛的研究,并使用了大量的反复试验法,但我尚未获得能够执行所需功能的脚本。我要创建一个脚本,该脚本将允许用户键入用户名,然后在所有邮箱中运行并显示用户在这些用户日历上的权限。我已经与以下脚本非常接近了,但是它只对整个邮箱有效,并且如果我只是在$ Box变量中添加“:\ Calendar”则不起作用。欢迎提供任何有关如何显示日历权限的输入。

$Username = Read-Host "Enter the user whose access you would like to view"
foreach ($Box in Get-Mailbox) {
    Get-MailboxFolderPermission -Identity $Box -User $Username
}

我知道这是上一个问题的重复,但是由于我对代码进行了重大更改,因此我认为值得再次询问。这是我之前的问题的链接: Exchange Powershell: Get-MailboxFolderPermission for all calendars

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以参考以下代码:

(Get-Mailbox) | ForEach-Object {
    Get-Mailboxfolderpermission (($_.PrimarySmtpAddress)+":\calendar") `
        -User happyboy -ErrorAction SilentlyContinue
    } | Select-Object Identity, User, Accessrights

有关更多信息,请参考此链接:

Display all mailbox calendars which a user has access to

答案 1 :(得分:0)

使用@ Alina-Li的建议,我可以得出以下代码。现在一切正常:

(Get-Mailbox) | ForEach-Object {
        $Permission = Get-Mailboxfolderpermission ($_.PrimarySMTPAddress.Local + "@" + $_.PrimarySMTPAddress.Domain +":\calendar") `
            -User $User -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Accessrights 
        if ($Permission -ne $null) {
            echo ("Calendar: "+($_.Name))
            echo ($User+"'s Permission: "+$Permission)
            echo ""
        }
    }