将多个 foreach 结果合并到一个报告中


$results = foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited))
{
    get-MailboxFolderPermission -identity "$($Mailbox.Name):Calendar" -ErrorAction SilentlyContinue |
        Where-Object {$_.User -notlike "Default" -and
                      $_.User -notlike "Anonymous" -and
                      $_.AccessRights -notlike "None" -and
                      $_.AccessRights } |
        Select @{N="Mailbox";E={$Mailbox.SamAccountName}}, FolderName, User, AccessRights
}
$results

我仍在学习Powershell(只有1整年的经验(。 我使用此代码报告环境中所有最终用户邮箱的日历权限。 该代码运行良好,但它仅报告日历对象。 我需要运行三个单独的报表才能获得"日历"、"联系人"和"收件箱"权限。

我尝试创建一个数组,但它在一行上抛出多个值。(某些最终用户有多个人有权访问其日历/联系人/收件箱。 有没有人知道如何组合这些结果?

谢谢

以下是我想要的结果的示例:

仅使用附加邮箱迭代一次

ForEach ($Folder in 'Contents','Calendar','Inbox')

应该更有效率:

#Date
$date = (Get-Date -f yyyy-MM-dd)
#Pull Permissions
$Permissions = ForEach ($Mailbox in (Get-Mailbox -ResultSize Unlimited )) { 
    ForEach ($Folder in 'Contents','Calendar','Inbox'){
        Get-MailboxFolderPermission -identity "$($Mailbox.Name):$($Folder)" -ErrorAction SilentlyContinue | 
          Where-Object {$_.User -notlike "Default" -and $_.User -notlike "Anonymous" -and $_.AccessRights -notlike "None" -and $_.AccessRights } | 
            Select @{N="Mailbox";E={$Mailbox.SamAccountName}}, 
                   @{N="Folder";E={$_.FolderName}}, 
                   @{N="User With Access";E={$_.User}}, 
                   @{N="Access";E={$_.AccessRights}}
    }
}
#Export to Desktop
$Permissions | Sort User | Export-Csv "$env:USERPROFILEDesktopExchangePermissions-$Date.csv" -NoTypeInformation
#Date
$date = (Get-Date -f yyyy-MM-dd)
#Pull Permissions
$Permissions = ForEach ($Mailbox in (Get-Mailbox -ResultSize Unlimited )) {
    $userInfo = get-user $Mailbox.name | select Title 
    ForEach ($Folder in 'Contacts','Calendar','Inbox'){
        Get-MailboxFolderPermission -identity "$($Mailbox.Name):$($Folder)" -ErrorAction SilentlyContinue | 
          Where-Object {$_.User -notlike "Default" -and $_.User -notlike "Anonymous" -and $_.AccessRights -notlike "None" -and $_.AccessRights } | 
            Select @{N="Mailbox";E={$Mailbox.SamAccountName}},
                   @{N="Office";E={$Mailbox.Office}},
                   @{N="Title";E={$userInfo.Title}},
                   @{N="Folder";E={$_.FolderName}}, 
                   @{N="User With Access";E={$_.User}}, 
                   @{N="Access";E={$_.AccessRights}}
    }
}
#Export to Desktop
$Permissions | Sort User | Export-Csv 
"$env:USERPROFILEDesktopExchangePermissions-$Date.csv" -NoTypeInformation

最新更新