Get-MailboxFolderPermission - foreach loop

旧城冷巷雨未停 提交于 2020-01-05 04:37:34

问题


I am trying to output all AD users calendar and contact permissions. I have tried adding an -or operator but as per the error screenshot it does not work. I am not sure if Get-MailboxFolderPermission can take more than one parameter.

This script does not run

$OU = OrganizationalUnit "OU=users,OU=test.com,OU=PIPE,OU=Hosting,DC=options,DC=com"

Get-Mailbox -OrganizationalUnit $OU -Filter * |
    select -Expand alias |
    Where-Object {Get-MailboxFolderPermission -Identity $($_ + ':\Calendar') -or $($_ + ':\Contacts')} |
    select Identity, FolderName, User, @{name="AccessRights";expression={[string]::Join(",",@($_.accessrights))}}, IsValid |
    Sort-Object Identity |
    Export-Csv C:\temp\calendarpemstest2.csv 

This script runs fine just getting calendar permissions

$OU = OrganizationalUnit "OU=users,OU=test.com,OU=PIPE,OU=Hosting,DC=options,DC=com"

Get-Mailbox -OrganizationalUnit $OU -Filter * |
    select -Expand alias |
    ForEach-Object {Get-MailboxFolderPermission -Identity $($_ + ':\Calendar')} |
    select Identity, FolderName, User, @{name="AccessRights";expression={[string]::Join(",",@($_.accessrights)) }}, IsValid |
    Sort-Object Identity |
    Export-Csv C:\temp\calendarpemstest2.csv

回答1:


Powershell tries to parse the -or parameter for Get-MailboxFolderPermission, but Get-MailboxFolderPermission does not have an -or parameter.

One way to work around this problem is to pipe the same aliases object twice (once for Calendar and once for Contacts).

$OU=OrganizationalUnit "OU=users,OU=test.com,OU=PIPE,OU=Hosting,DC=options,DC=com"
$aliases = Get-Mailbox -OrganizationalUnit $OU -filter *  | select -expand alias
$calendarPermissions = $aliases | ForEach-Object { Get-MailboxFolderPermission -identity $($_ + ':\Calendar' ) } 
$contactsPermissions = $aliases | ForEach-Object { Get-MailboxFolderPermission -identity $($_ + ':\Contacts' ) }

# now merge both permissions and pipe to the rest of the code
$calendarPermissions + $contactsPermissions |
Select Identity, FolderName, User, @{name="AccessRights";expression={ [string]::join(",",@($_.accessrights)) }}, IsValid |
Sort-Object identity |
Export-Csv C:\temp\calendarpemstest2.csv


来源:https://stackoverflow.com/questions/48516483/get-mailboxfolderpermission-foreach-loop

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!