【问题标题】:Display all mailbox calendars which a user has access to显示用户有权访问的所有邮箱日历
【发布时间】:2018-08-14 19:42:49
【问题描述】:

我想找出用户当前可以访问的所有日历。我搜索了互联网,我得到的最接近的答案是这样的:

(get-mailbox) | foreach{Get-Mailboxfolderpermission (($_.PrimarySmtpAddress)+":\calendar") -user happyboy -ErrorAction SilentlyContinue} |select identity, user, accessrights

但是,显示器并没有真正显示实际身份,即happyboy(上图)可以访问的实际邮箱。显示是这样的:

Identity    User        AccessRights    
--------    ----        ------------    
HappyBoy    HappyBoy   {Reviewer}      
HappyBoy    HappyBoy   {LimitedDetails}
HappyBoy    HappyBoy   {Editor}        
HappyBoy    HappyBoy   {Editor}        
HappyBoy    HappyBoy   {Owner}         
HappyBoy    HappyBoy   {Editor} 

我期待这样的事情:

Identity    User        AccessRights    
--------    ----        ------------    
FunnyMan    HappyBoy   {Reviewer}      
PrettyGirl  HappyBoy   {LimitedDetails}
BadBoy      HappyBoy   {Editor}        
LuckyBoy    HappyBoy   {Editor}        
SadGirl     HappyBoy   {Owner}         
LovelyGirl  HappyBoy   {Editor} 

我们可以修改脚本来实现这个吗?

【问题讨论】:

  • 我试图重现您的问题,但对我来说显示的身份是 HappyBoy:\Calendar。顺便说一句,像日历这样的文件夹名称可能会受到区域设置的影响,因此您应该注意这一点。
  • 实际上,我希望脚本会显示来自 Get-Mailbox 的识别,但它显示的是 Get-MailboxFolderPermission 的身份

标签: powershell exchange-server


【解决方案1】:

您的一个班轮格式更具可读性:

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

应明确终止管道元素 (Select-Object) 接收 Get-Mailboxfolderpermission cmdlet 的输出,Get-Mailboxoutput 不再可直接访问。

这个(未经测试的)脚本使用 $mailbox 变量来存储当前迭代的邮箱。

## Q:\Test\2018\08\14\SO_51836373.ps1

ForEach ($mailbox in (Get-Mailbox)){
    Get-Mailboxfolderpermission (($mailbox.PrimarySmtpAddress)+":\calendar") `
        -User happyboy -ErrorAction SilentlyContinue | ForEach-Object {
        [PSCustomObject]@{
            Identity     = $mailbox.Identity
            User         = $_.User
            AccessRights = $_.Accessrights
        }
    }
}

另一种更类似于您的模板的方法存储邮箱标识并将计算的属性插入到 Select-Object 中。 (也未经测试)

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

【讨论】:

  • 非常感谢,LotPings。您发布的底部脚本完美运行,而第一个脚本不返回任何内容。
  • 如果你想要更详细的共享日历报告,试试这个脚本:o365reports.com/2021/11/02/…
猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 2018-12-20
  • 2013-08-16
  • 1970-01-01
相关资源
最近更新 更多