问题
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