Add get-mailbox-with-permissions.ps1
This commit is contained in:
		
							parent
							
								
									ed7140e52c
								
							
						
					
					
						commit
						1e494849ff
					
				
							
								
								
									
										65
									
								
								get-mailbox-with-permissions.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								get-mailbox-with-permissions.ps1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| # Output file | ||||
| $OutputFile = "MailboxPermissionsWithSMTPAndName.csv" | ||||
| 
 | ||||
| # Initialize an array for the results | ||||
| $Results = @() | ||||
| 
 | ||||
| # Retrieve all mailboxes (all types) | ||||
| $Mailboxes = Get-Mailbox -RecipientTypeDetails UserMailbox,SharedMailbox -ResultSize Unlimited | ||||
| 
 | ||||
| # Loop through all mailboxes | ||||
| foreach ($Mailbox in $Mailboxes) { | ||||
|     # Retrieve the primary SMTP address and display name | ||||
|     $PrimarySmtpAddress = $Mailbox.PrimarySmtpAddress | ||||
|     $DisplayName = $Mailbox.DisplayName | ||||
| 
 | ||||
|     # Retrieve mailbox permissions | ||||
|     $Permissions = Get-MailboxPermission -Identity $Mailbox.Identity | ||||
| 
 | ||||
|     # Check if specific permissions are set | ||||
|     if ($Permissions.Count -eq 0) { | ||||
|         # Add mailbox without additional permissions | ||||
|         $Results += [PSCustomObject]@{ | ||||
|             DisplayName        = $DisplayName | ||||
|             MailboxType        = $Mailbox.RecipientTypeDetails | ||||
|             PrimarySmtpAddress = $PrimarySmtpAddress | ||||
|             User               = "Default owner" | ||||
|             AccessRights       = "FullAccess" | ||||
|             IsInherited        = "N/A" | ||||
|         } | ||||
|     } else { | ||||
|         # Add permissions | ||||
|         foreach ($Permission in $Permissions) { | ||||
|             # Filter default permissions such as NT AUTHORITY\SELF | ||||
|             if ($Permission.User -notlike "NT AUTHORITY\SELF") { | ||||
|                 $Results += [PSCustomObject]@{ | ||||
|                     DisplayName        = $DisplayName | ||||
|                     MailboxType        = $Mailbox.RecipientTypeDetails | ||||
|                     PrimarySmtpAddress = $PrimarySmtpAddress | ||||
|                     User               = $Permission.User | ||||
|                     AccessRights       = $Permission.AccessRights -join ", " | ||||
|                     IsInherited        = $Permission.IsInherited | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| # Add mailboxes that may not have displayed permissions | ||||
| foreach ($Mailbox in $Mailboxes) { | ||||
|     if (-not ($Results.DisplayName -contains $Mailbox.DisplayName)) { | ||||
|         $Results += [PSCustomObject]@{ | ||||
|             DisplayName        = $Mailbox.DisplayName | ||||
|             MailboxType        = $Mailbox.RecipientTypeDetails | ||||
|             PrimarySmtpAddress = $Mailbox.PrimarySmtpAddress | ||||
|             User               = "Default owner" | ||||
|             AccessRights       = "FullAccess" | ||||
|             IsInherited        = "N/A" | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| # Export the results to a CSV file | ||||
| $Results | Export-Csv -Path $OutputFile -NoTypeInformation -Encoding UTF8 | ||||
| 
 | ||||
| Write-Host "All mailboxes, permissions, names, and SMTP addresses have been exported to $OutputFile" | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user